LeetCode | Binary Tree Level Order Traversal
来源:互联网 发布:苹果cms模板下载 编辑:程序博客网 时间:2024/05/25 05:35
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 7
return its level order traversal as:
[ [3], [9,20], [15,7]]
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
//层序遍历,使用队列来实现: //队列的前半部分是当前层节点,后半部分是下一层节点 //remove队头遍历其val,然后将其left与right(如果有的话)入队 //使用标记位nextLevelStarter来标记下一层的首个节点,以免在队列中遍历当前层时越界public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> result = new ArrayList<List<Integer>>(); if(root==null) return result; Queue<TreeNode> nodeQueue = new LinkedList<TreeNode>();//注意Java中Queue是接口,不能直接实例化,而LinkedList实现了Queue接口 nodeQueue.add(root); TreeNode nextLevelStarter; //标记下一层的起始节点,以免在Queue中遍历是越界 while(!nodeQueue.isEmpty()){ List<Integer> thisLevelList = new ArrayList<Integer>(); nextLevelStarter = null; //在开始遍历本层时,先把其置为null,然后找下一层的首节点赋予 while(nodeQueue.isEmpty()==false && nodeQueue.peek()!=nextLevelStarter){//在Queue中遍历本层的节点 TreeNode curNode = nodeQueue.remove(); //peek()只返回头,remove()返回并删除头 thisLevelList.add(curNode.val); if(curNode.left!=null) nodeQueue.add(curNode.left); if(curNode.right!=null) nodeQueue.add(curNode.right); if(nextLevelStarter==null){ //说明还未找到下层的首节点,就进入寻找 if(curNode.left!=null){ nextLevelStarter = curNode.left; }else if(curNode.right!=null){ nextLevelStarter = curNode.right; } } } result.add(thisLevelList); } return result; }}
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
- 百度前端面试题
- jQuery 实现 图片上传预览
- 正确处理 Memory Warning
- linux文本格式转换
- project facet java 1.8 is not supported解决办法
- LeetCode | Binary Tree Level Order Traversal
- Apple Watch人机交互指南:UI设计基础--模态页面和布局
- 读书列表
- Service 服务
- 从二进制数据流中构造GDAL可以读取的图像数据(C#)
- xy理论
- Adobe AIR,Android 版
- OpenCV关于稀疏光流跟踪的演示程序以及一些错误提示
- 内核模块编程二