N叉树的层序遍历

作者: 习惯了_就好 | 来源:发表于2019-07-04 09:06 被阅读0次

    给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。

    例如,给定一个 3叉树 :


    图片.png

    返回其层序遍历:

    [
    [1],
    [3,2,4],
    [5,6]
    ]

    说明:

    树的深度不会超过 1000。
    树的节点总数不会超过 5000。
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    /*
    // Definition for a Node.
    class Node {
        public int val;
        public List<Node> children;
    
        public Node() {}
    
        public Node(int _val,List<Node> _children) {
            val = _val;
            children = _children;
        }
    };
    */
    class Solution {
        List<List<Integer>> result = new ArrayList<List<Integer>>();
        
        public List<List<Integer>> levelOrder(Node root) {
            doHandle(root,0);
            return result;
        }
        
        private void doHandle(Node root,int leval){
            if(root == null){//递归结束条件
                return;
            }
            
            List<Integer> list;
            if(leval < result.size()){//最终大数组里已经有这一层的节点了,就把存放该层节点的数组取出来,也放到该数组中
                list = result.get(leval);
                list.add(root.val);
            } else {//最终大数组里还没有这一层的节点,就new一个出来,将节点放进去,并把该数组放到最终节点中
                list = new ArrayList<Integer>();
                list.add(root.val);
                result.add(list);
            }
            
            List<Node> children = root.children;
            int childrenLength = children.size();
            for(int i = 0; i < childrenLength; i++){//每一个子节点都执行上面的操作
                doHandle(children.get(i), leval + 1);
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:N叉树的层序遍历

        本文链接:https://www.haomeiwen.com/subject/yjgkhctx.html