【LeetCode】102. Binary Tree Level Order Traversal-二叉树水平顺序遍历
2017-03-28 10:37
417 查看
一、描述:
Queue:先进先出, 后进后出。可以保证每一层遍历时的结点顺序;
BFS:类似于电影中的病毒传染,先感染靠近自己的,再由易感染层感染更外层…(我理解的就是这么个理);
该题二叉树中,先把根结点压入队列,当队列不为空时,移除队首结点,并判断该结点的左右子树中有无非空结点,若存在,则再次入队对应的左右子树结点……同一层的每个结点循环以上操作,直至队列为空,循环结束。
二、思路:
二叉树或一般树的水平层次遍历,可以使用BFS(广度搜素)算法,使用队列Queue标记每一层的结点元素;Queue:先进先出, 后进后出。可以保证每一层遍历时的结点顺序;
BFS:类似于电影中的病毒传染,先感染靠近自己的,再由易感染层感染更外层…(我理解的就是这么个理);
该题二叉树中,先把根结点压入队列,当队列不为空时,移除队首结点,并判断该结点的左右子树中有无非空结点,若存在,则再次入队对应的左右子树结点……同一层的每个结点循环以上操作,直至队列为空,循环结束。
三、代码:
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 List<List<Integer>> list1 = new ArrayList<List<Integer>>(); 12 Queue<TreeNode> queue =new LinkedList<TreeNode>(); 13 14 public List <List<Integer>> levelOrder(TreeNode root) { 15 if(root==null){ 16 return list1; 17 } 18 queue.offer(root); 19 while(!queue.isEmpty()){ 20 List<Integer> list2 = new ArrayList<Integer>(); 21 int size = queue.size(); 22 for(int i=0;i<size;i++){ 23 TreeNode node = queue.remove(); 24 list2.add(node.val); 25 if(node.left!=null){ 26 queue.offer(node.left); 27 } 28 if(node.right!=null){ 29 queue.offer(node.right); 30 } 31 } 32 list1.add(list2); 33 } 34 return list1; 35 } 36 }
相关文章推荐
- 【LeetCode】107. Binary Tree Level Order Traversal II-二叉树水平顺序遍历2
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
- leetCode 102.Binary Tree Level Order Traversal (二叉树水平遍历) 解题思路和方法
- LeetCode 102 Binary Tree Level Order Traversal(二叉树的层级顺序遍历)(*)
- LeetCode 107. Binary Tree Level Order Traversal II (二叉树阶层顺序遍历之二)
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
- LeetCode--102. Binary Tree Level Order Traversal(二叉树水平遍历)Python
- LeetCode(Binary Tree Level Order Traversal, 2,Zigzag)二叉树的层次遍历
- 二叉树三种顺序遍历应用
- 快速写出二叉树的遍历顺序
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- leetcode:Populating Next Right Pointers in Each Node II (顺序连接二叉树每一层节点)【面试算法题】
- LeetCode Binary Tree Preorder Traversal 前序遍历二叉树 递归和非递归解法
- 用二叉树的后序遍历来看oracle执行计划的执行顺序
- 顺序结构实现二叉树的建立和各种遍历
- 把一个二叉树转换成一棵最右深度树,并且保证前序遍历顺序不变
- 已知一颗二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是,CDFEGHAB,则后序遍历的结果为
- 数据结构--二叉树--层次遍历二叉树(顺序遍历)
- Binary Tree Level Order Traversal 分层遍历二叉树@LeetCode
- 卡特兰数--前序遍历对应的二叉树/进栈顺序对应的出栈顺序