首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过集合框架展平多级链表

通过集合框架展平多级链表
EN

Stack Overflow用户
提问于 2017-04-20 23:38:44
回答 1查看 182关注 0票数 1

考虑下面的示例http://www.geeksforgeeks.org/flatten-a-linked-list-with-next-and-child-pointers/

我可以在java中通过集合来扁平化多级链表,但是我不能在给定的节点及其子节点和下一个节点之间建立关系。在当前示例中,10具有值为4、20和13的子节点。我想以一种更好的方式使用Collections框架,它可以指定子节点和下一个节点,然后在给定的输入上应用展平操作。请帮帮我。

代码语言:javascript
复制
    List<List<Integer>> obj =new LinkedList<List<Integer>>();
    obj.add(Arrays.asList(10,5,12,7,11));
    obj.add(Arrays.asList(4,20,13,17,6));
    obj.add(Arrays.asList(2,16,9,8));
    obj.add(Arrays.asList(3,19,15));

    obj.stream().flatMap(e->e.stream()).forEach(i->System.out.print(i+" "));;
EN

回答 1

Stack Overflow用户

发布于 2017-04-21 20:28:17

我解决了这里的问题是代码。

代码语言:javascript
复制
 import java.util.*;
import java.lang.*;
import java.io.*;

class Node {
    int data;
    List<Node> child;

    public Node(int data, List<Node> child) {
        this.data = data;
        this.child = child;
    }

    @Override
    public String toString() {
        return data+" ";
    }
}

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
            List<Node> obj1 = new LinkedList<Node>();

        obj1.add(new Node(10, Arrays.asList(new Node(4,null),new Node(20,Arrays.asList(new Node(2, null))),
                new Node(13,Arrays.asList(new Node(16, Arrays.asList(new Node(3, null)))))  )));
        obj1.add(new Node(5, null));
        obj1.add(new Node(12,null));
        obj1.add(new Node(7,Arrays.asList(new Node(17, Arrays.asList(new Node(9, Arrays.asList(new Node(19, null),
                new Node(15, null))),new Node(8, null))
                ),new Node(6, null))
                ));
        obj1.add(new Node(11,null));

        int tail=obj1.size();

        for(int i=0;i<tail;i++)
        {
            Node n=obj1.get(i);
            if(n.child!=null)
            {
                for(Node o:n.child)
                {
                    obj1.add(tail, o);
                    tail++;
                }
                n.child=null;
            }
        }

        System.out.println(obj1);

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43524080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档