`
blue2048
  • 浏览: 182752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[leetcode]Binary Tree Level Order Traversal - java 树层遍历技巧

阅读更多

广度遍历的基础上,再使用是个集合存储下一层节点,在队列进元素的时机上做出一些改变,就能达到层级遍历树的效果

 

/**

 * Definition for binary tree

 * public class TreeNode {

 *     int val;

 *     TreeNode left;

 *     TreeNode right;

 *     TreeNode(int x) { val = x; }

 * }

 */

public class Solution {

   public List<List<Integer>> levelOrder(TreeNode root) {

        List<List<Integer>> result = new ArrayList<List<Integer>>();

        if(root == null){

            return result;

        }

        List<Integer> first = new ArrayList<Integer>();

        first.add(root.val);

        result.add(first);



        LinkedList<TreeNode> queue = new LinkedList<TreeNode>();

        LinkedList<TreeNode> childrenQueue = new LinkedList<TreeNode>();

        queue.add(root);

        while (!queue.isEmpty()) {

            TreeNode node = queue.remove();

            if(node.left!=null){

                childrenQueue.add(node.left);

            }

            if(node.right!=null){

                childrenQueue.add(node.right);

            }

            if(queue.isEmpty() && !childrenQueue.isEmpty()){

                List<Integer> childrenResult = new ArrayList<Integer>(childrenQueue.size());

                for(TreeNode child : childrenQueue){

                    queue.add(child);

                    childrenResult.add(child.val);

                }

                result.add(childrenResult);

                childrenQueue.clear();

            }

        }

        return result;

    }

}

 

分享到:
评论

相关推荐

    leetcode-tree

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

    四平方和定理leetcode-leetcode-practice:个人LeetCode练习代码

    102.binary-tree-level-order-traversal (二叉树的层序遍历) 104.maximum-depth-of-binary-tree (二叉树的最大深度) 105.construct-binary-tree-from-preorder-and-inorder-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和...

    Leetcode题目+解析+思路+答案.pdf

    - **Binary Tree Level Order Traversal**:二叉树的层次遍历。 - **Symmetric Tree**:判断一个二叉树是否是对称的。 - **Same Tree**:判断两棵二叉树是否相同。 - **Balanced Binary Tree**:判断一个二叉树...

    leetcode中文版-leetcode:leetcode

    leetcode中文版车鸟 一组用python编写的算法。 种类 冒泡排序 插入排序 归并排序 桶排序 计数排序 基数排序 ...树 ...二叉搜索树结构 遍历二叉树 ...balance_binary_tree ...binary_tree_level_order_traversal_I

    leetcode中文版-LeetCodeAnimation:力码动画

    leetcode中文版 我会尽力将LeetCode上所有的题目都用动画的形式演示出来,计划用3到4年时间去完成它,期待与你见证这一天! 文章最新首发于微信公众号 五分钟学算法 ,您可以关注获取最新的文章。 Problems ID ...

    leetcode刷题列表

    例如,树的层级遍历(Levelorder Traversal)、判断树的对称性(Symmetric Tree)、找到二叉搜索树中距离某个值最近的节点(Closest Binary Search Tree Value)等。这些题目通常要求编写者熟悉树的结构和遍历方法,...

    leetcode下载-LeetCodeAnimation:力码动画

    leetcode下载 我会尽力将LeetCode上所有的题目都用动画的形式演示出来,计划用3到4年时间去完成它,期待与你见证这一天! 文章最新首发于微信公众号 五分钟学算法 ,您可以关注获取最新的文章。 Problems ID Problem...

    LeetCode-Hot-100

    5. **递归与函数**:递归是解决许多算法问题的有效手段,如"Binary Tree Level Order Traversal"使用层次遍历(广度优先搜索)求解。而"Factorial Trailing Zeroes"则通过递归计算阶乘尾部零的个数。 6. **复杂度...

    LeetCode leetcode部分题解答代码实现

    * Binary Tree Level Order Traversal:给定一个二叉树,返回树的层次遍历结果。这个题目需要使用队列的思想,将树分解成更小的层次,并遍历每个层次。 * Symmetric Tree:给定一个二叉树,判断是否为对称树。这个...

    leetcode中文版-cabbird:一组用python编写的算法

    leetcode中文版车鸟 一组用python编写的算法。 种类 冒泡排序 插入排序 归并排序 桶排序 计数排序 基数排序 ...树 ...二叉搜索树结构 遍历二叉树 ...balance_binary_tree ...binary_tree_level_order_traversal_I

    手稿_V1.046

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

    LeetCode练习答案

    - **二叉树的层序遍历(Binary Tree Level Order Traversal)**: 给定一棵二叉树,返回其层序遍历的结果。 - **对称树(Symmetric Tree)**: 判断一个二叉树是否是对称的。 - **相同的树(Same Tree)**: 判断两个二叉树...

    Selective_Leetcode_solutions

    7. 题目107 - "Binary Tree Level Order Traversal II" 本题要求对二叉树进行倒序层次遍历。Java中,可以使用队列进行层次遍历,但每次取出节点后,先将其子节点加入队列,最后再处理该节点,以达到倒序的效果。 ...

Global site tag (gtag.js) - Google Analytics