LeetCode-Binary Tree Level Order Traversal
来源:互联网 发布:客户满意率的数据来源 编辑:程序博客网 时间:2024/06/05 00:16
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,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7]]
Subscribe to see which companies asked this question
此题的思路:用两个队列分别保存当前行和下一行的所有结点,遍历每一层的结点,都把结点放入到 nodeValues 中,当前层遍历结束,将当前层的nodeValues 存入 al 里,知道所有层都遍历结束,返回 al。
代码如下:
/** * 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 ) { ArrayList < List< Integer > > al = new ArrayList < List< Integer > >(); //存储所有层上的结点值 ArrayList < Integer > nodeValues = new ArrayList < Integer >(); //存储每一层上的所有结点值 if( root == null ) return al; //创建两个队列,一个保存当前层的所有结点,另外一个保存下一层的所有结点 LinkedList < TreeNode > current = new LinkedList < TreeNode >(); //存储当前层的结点 LinkedList < TreeNode > next = new LinkedList < TreeNode >(); //存储下一层的结点 current.add( root ); while( !current.isEmpty() ){ TreeNode node = current.remove(); //一处队列中第一个元素 if( node.left != null ) next.add ( node.left ); //把当前结点的左子结点放入到next中 if( node.right != null ) next.add( node.right ); //把当前结点的右子结点放入到next中 nodeValues.add( node.val ); //把当前结点放入到nodeValues中 if( current.isEmpty() ){ //当前层已经遍历完成 current = next; //往下移一层 next = new LinkedList < TreeNode >(); //重新创建next al.add( nodeValues ); //将当前层的所有节点值放入到al中 nodeValues = new ArrayList <> (); //重新创建nodeValues } } return al; }}
0 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
- IsBackground对线程的重要作用
- 熟悉这几个常用命令,你就是Linux/Unix的vi高手了。
- 1433. 数码问题
- HDU2088 Box of Bricks
- html5学记笔记(三)新的布局
- LeetCode-Binary Tree Level Order Traversal
- Android 侧栏A-Z的快速滑动搜索(一)
- how to remain a TObject after the corresponding TFile is closed
- 工业无线通信网络步入LTE 时代
- ActiveX控件(ATL篇)
- ubuntu 下pip的卸载,安装,更新与使用
- Android ImageView
- 解析 STM32 的启动过程
- Java基础 - 哈夫曼编码