`

Binary Tree Level Order Traversal II

阅读更多
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

For example:
Given binary tree {3,9,20,#,#,15,7},
    3
   / \
  9  20
   /   \
  15   7
return its bottom-up level order traversal as:
[
  [15,7],
  [9,20],
  [3]
]

同样是二叉树广度优先遍历的变形,要求从下面开始记录每一层的节点,我们可以从根节点开始,倒序记录每一层的节点就可以了。代码如下:
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
        LinkedList<List<Integer>> result = new LinkedList<List<Integer>>();
        List<Integer> list = new ArrayList<Integer>();
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        if(root == null)
            return result;
        queue.offer(root);
        int helper = 1, count = 0;
        while(!queue.isEmpty()) {
            TreeNode cur = queue.poll();
            list.add(cur.val);
            helper --;
            if(cur.left != null) {
                queue.offer(cur.left);
                count ++;
            }
            if(cur.right != null) {
                queue.offer(cur.right);
                count ++;
            }
            if(helper == 0) {
                result.addFirst(new ArrayList<Integer>(list));
                helper = count;
                count = 0;
                list.clear();
            }
        }
        return result;
    }
}
分享到:
评论

相关推荐

    python-leetcode题解之107-Binary-Tree-Level-Order-Traversal-II

    2. 在LeetCode平台上,问题编号107的题目是“Binary Tree Level Order Traversal II”,它要求对给定的二叉树进行反向层级遍历,即从最后一层到第一层的顺序输出节点值。 3. 反向层级遍历算法可以通过先进行正常的...

    【LeetCode】102. Binary Tree Level Order Traversal

    我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI 微信公众号介绍:Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的...102. Binary Tree Leve

    Leetcode 使用 Javascript 的解决方案.zip

    Javascript 的解决方案Leetcode Problems and interview problems in Javascript10 Regular Expresion Matching.js100 Same ...Binary Tree Level Order Traversal II.js108 Convert Sorted Array to Binary Search Tr

    java-leetcode-107-binary-tree-level-order-traversal

    java java_leetcode-107-binary-tree-level-order-traversal

    java-leetcode-102-binary-tree-level-order-traversal

    java java_leetcode-102-binary-tree-level-order-traversal

    python-leetcode题解之102-Binary-Tree-Level-Order-Traversal

    由于LeetCode平台提供了一个公共的编程问题库供开发者练习和提升编程能力,因此我们选择了其中的题目编号102,即"Binary Tree Level Order Traversal"(二叉树的层序遍历)。为了解决这个问题,我们通常需要掌握队列...

    leetcode卡-LeetCode:我的LeetCode解决方案

    leetcode卡 LeetCode 记录一下再LeetCode上刷的题,坚持每天刷一道吧 2017.06.12 打卡[LeetCode 2. Add ...Level Order Traversal II], Tree/BFS 2017.06.20 打卡[LeetCode 324. Wiggle Sort II], S

    Level Order Traversal

    Now we have a serial of numbers. Please build a Binary Search Tree with them. Then output its level-order traversal.

    js-leetcode题解之107-binary-tree-level-order-traversal-ii.js

    通过LeetCode题解的这个文件“js-leetcode题解之107-binary-tree-level-order-traversal-ii.js”,我们可以学习如何使用JavaScript编写二叉树层序遍历的变种,以及如何处理和操作队列数据结构。

    Binary_Tree_Level_Order_Traversa

    从文件名称“Binary_Tree_Level_Order_Traversal_II”来看,这可能涉及到层次遍历的变种或扩展问题。例如,可能需要实现非递归版本的层次遍历,或者在层次遍历的基础上解决更复杂的问题,比如找出二叉树每一层的节点...

    leetcode-tree

    102-Binary Tree Level Order Traversal199-Binary Tree Right Side View:层次遍历的一个运用树的构造给出前中后序的序列中的两个,构造一棵树。递归。前序 parent left-child right-child中序 left-child parent ...

    手稿_V1.046

    在给定的代码中,我们讨论的是如何解决LeetCode上的一个问题——“二叉树的层次遍历II”(Binary Tree Level Order Traversal II),这个问题要求我们实现一个C++函数`levelOrderBottom`,该函数接收一个二叉树的根...

    leetcode中文版-LeetCodeAnimation:力码动画

    Traversal II 144 二叉树的前序遍历 145 二叉树的后序遍历 150 逆波兰表达式求值 167 两数之和 II - 输入有序数组 199 二叉树的右视图 每天一算:Binary Tree Right Side View 203 移除链表元素 206 反转

    python-leetcode题解之103-Binary-Tree-Zigzag-Level-Order-Traversal

    今天我们将详细讨论Python实现LeetCode第103题——二叉树的锯齿形层序遍历(Binary Tree Zigzag Level Order Traversal)的解决方案。 二叉树的锯齿形层序遍历要求我们以不同于传统层序遍历的方式输出树节点值,即...

    leetcode-[removed]使用Java的Leetcode解决方案

    102 Binary Tree Level Order Traversal.js(二叉树级订单Traversal.js) 103 Binary Tree Zigzag Level Order Traversal.js(二叉树之字形级别顺序Traversal.js) 104 Binary Tree.js的最大深度 105从Preorder和...

    javalruleetcode-what_the_dead_men_say:what_the_dead_men_say

    Binary Search Tree - Java Recursive - Java Iterative - Java Inorder 0099 Recover Binary Search Tree - Java Recursive 0101 Symmetric tree - Java Recursive - Java Iterative - C Recursive - ...

    lrucacheleetcode-luoleet:LeetcodesolutionsbyXinhangLuoandQinghaoDai

    https://leetcode.com/problems/binary-tree-level-order-traversal/ Binary Tree Level Order Traversal 103 https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ Binary Tree Zigzag Level ...

    leetcode下载-LeetCodeAnimation:力码动画

    leetcode下载 ...Traversal II 136 只出现一次的数字 2019-01-16 144 二叉树的前序遍历 145 二叉树的后序遍历 146 LRU缓存机制 LRU缓存机制 2019-01-25 Made by Jun chen 150 逆波兰表达式求值 167 两数之

    js-leetcode题解之102-binary-tree-level-order-traversal.js

    function levelOrder(root) { if (!root) return []; let result = []; let queue = [root]; while (queue.length &gt; 0) { let levelSize = queue.length; let level = []; for (let i = 0; i &lt; levelSize;...

Global site tag (gtag.js) - Google Analytics