美文网首页快乐写代码
T107、二叉树的层次遍历||

T107、二叉树的层次遍历||

作者: 上行彩虹人 | 来源:发表于2020-09-11 22:34 被阅读0次

    给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
    例如:
    给定二叉树 [3,9,20,null,null,15,7],

    3
    /
    9 20
    /
    15 7
    返回其自底向上的层次遍历为:

    [
    [15,7],
    [9,20],
    [3]
    ]

    利用队列的size对二叉树分层,然后每次加入层的时候加入到队列头部。

        public List<List<Integer>> levelOrderBottom(TreeNode root) {
            LinkedList<List<Integer>> result = new LinkedList<>();
            if(root == null)
                return result;
            Queue<TreeNode> queue = new LinkedList<>();
            queue.add(root);
            while(!queue.isEmpty()){
                List<Integer> oneLevel = new ArrayList<>();
                int count = queue.size();
                for (int i = 0; i < count; i++) {
                    TreeNode node = queue.poll();
                    oneLevel.add(node.val);
                    if (node.left != null)
                        queue.add(node.left);
                    if (node.right != null)
                        queue.add(node.right);
                }
                result.addFirst(oneLevel);
            }
            return result;
        }
    

    相关文章

      网友评论

        本文标题:T107、二叉树的层次遍历||

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