《leetCode》:Binary Tree Level Order Traversal
来源:互联网 发布:淘宝找人微信代付步骤 编辑:程序博客网 时间:2024/05/03 21:00
题目
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).For example:Given binary tree {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7return its level order traversal as:[ [3], [9,20], [15,7]]
思路
这个题与《剑指Offer》上面的按层打印的思路较像,都是借用队列来完成,本题的思路为:借用两个队列,当访问到某个节点时就将其左右子节点放入另一个队列进行保存,这样当访问玩第i层的所有节点时就将第i+1层的节点按从左到右的顺序保存到了队列中。
实现代码如下:
/** * 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>> levelOrder(TreeNode root) { Queue<TreeNode> q1=new LinkedList<TreeNode>(); Queue<TreeNode> tempQ=new LinkedList<TreeNode>(); List<List<Integer>> res=new ArrayList<List<Integer>>(); if(root==null){ return res; } q1.add(root); while(!q1.isEmpty()){ List<Integer> list=new ArrayList<Integer>(); while(!q1.isEmpty()){//取出这一层中所有结点的值 TreeNode node=q1.remove(); list.add(node.val); //将该结点的左右子节点放入另一个队列中 if(node.left!=null){ tempQ.add(node.left); } if(node.right!=null){ tempQ.add(node.right); } } res.add(list); //将tempQ队列中的元素拷贝到q1队列中,供下次循环使用 while(!tempQ.isEmpty()){ q1.add(tempQ.remove()); } } return res; }}
1 0
- LeetCode[Tree]: Binary Tree Level Order Traversal
- *(leetcode) Binary Tree Level Order Traversal (tree)
- [leetcode][tree] Binary Tree Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal
- LeetCode: Binary Tree Zigzag Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal
- [LeetCode]Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- RxJava入门学习------①操作符
- seekTo()的相关_android里的mediaplayer
- Sublime设置
- CAA开发创建workshop/workbench应用程序的详细步骤(1)
- c#网络相关
- 《leetCode》:Binary Tree Level Order Traversal
- 2016 目标!!
- 哈希表和布隆过滤器
- 食堂买饭的启示
- Mybatis中的model实体与数据库中的字段不一致的解决方案
- 交换两个整型变量的值
- QT无边框可移动可改变大小窗体
- 003-LAMP_database_overview
- 1024: 计算圆的问题