LeetCode 102 Binary Tree Level Order Traversal(二叉树的层次遍历)
2016-11-15 20:17
483 查看
一,问题描述:
1,给定一棵二叉树,返回它的层次遍历。
2,例如:
3,解题思路:
使用LinkedList queue=new LinkedList()。因为LinkedList具有队列的性质,即先进先出规则。然后统计每一层的节点个数,然后在每层从左到右输出节点。
二,AC了的程序(使用Java实现的)
运行结果如下:
1,给定一棵二叉树,返回它的层次遍历。
2,例如:
3,解题思路:
使用LinkedList queue=new LinkedList()。因为LinkedList具有队列的性质,即先进先出规则。然后统计每一层的节点个数,然后在每层从左到右输出节点。
二,AC了的程序(使用Java实现的)
import java.util.*; class TreeNode{ //节点的构造 int val; TreeNode left; TreeNode right; TreeNode(int x) { val=x; } } public class Test2{ List<List<Integer>> list=new ArrayList<List<Integer>>(); public List<List<Integer>> levelOrder(TreeNode root) { if(root==null) { return list; } LinkedList<TreeNode> queue=new LinkedList<TreeNode>(); //定义一个LinkedList集合,其类型是TreeNode queue.offer(root); //首先把根进入队列中 while(!queue.isEmpty()) //队列不为空的 { int num=queue.size(); //队列的长度; List<Integer> templist=new ArrayList<Integer>(); //定义一个ArrayList集合 while(num>0)//首先判断num是否大于0先获取每一层的结点个数。 { TreeNode node=queue.peek(); //查看队头元素,但是不删除队头的元素,队列是先进先出的规则 if(node.left!=null) //该节点的左孩子不为空 { queue.offer(node.left); //将左孩子进入队尾 } if(node.right!=null) //如果该节点的右孩子不为空 { queue.offer(node.right); //将右孩子进入队尾。 } int data=queue.poll().val; //将节点从队头出队// 。 templist.add(data); //将出的节点加入到tempList集中 num--; //然后每次减1. } list.add(templist); } return list; } public static void main(String []args) { Test2 test=new Test2(); Scanner scan=new Scanner(System.in); TreeNode root=new TreeNode(3); TreeNode p2=new TreeNode(9); TreeNode p3=new TreeNode(20); TreeNode p4=new TreeNode(15); TreeNode p5=new TreeNode(7); root.left=p2; root.right=p3; p3.left=p4; p3.right=p5; List<List<Integer>> list=test.levelOrder(root); Iterator<List<Integer>> it1=list.iterator(); while(it1.hasNext()) { List<Integer> list2=it1.next(); Iterator<Integer> it2=list2.iterator(); while(it2.hasNext()) { int data=it2.next(); System.out.print(data+" "); } System.out.println(); } } }
运行结果如下:
相关文章推荐
- 102.LeetCode Binary Tree Level Order Traversal(easy)[二叉树层次遍历 广度搜索 队列]
- [leetcode-二叉树层次遍历并统计每层节点数]--102. Binary Tree Level Order Traversal
- LeetCode: 102_Binary Tree Level Order Traversal | 二叉树自顶向下的层次遍历 | Easy
- LeetCode103 BinaryTreeZigzagLevelOrderTraversal(二叉树Z形层次遍历) Java题解
- Leetcode 107. 二叉树的层次遍历 II
- LeetCode-Binary Tree Zigzag Level Order Traversal-二叉树锯齿层次遍历-二叉树DFS层次遍历
- [LeetCode]二叉树层次遍历讲解与实例
- Leetcode 107. Binary Tree Level Order Traversal II 二叉树层次遍历2 解题报告
- leetcode 二叉树层次遍历输出Binary Tree Level Order Traversal
- LeetCode基础--二叉树--层次遍历
- 199.leetcode Binary Tree Right Side View(medium)[层次遍历二叉树 队列]
- LeetCode - 107. 二叉树的层次遍历 II
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- Leetcode 107 Binary Tree Level Order Traversal II 二叉树层次遍历与倒转
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树层次遍历 栈]
- 【LeetCode-面试算法经典-Java实现】【102-Binary Tree Level Order Traversal(二叉树层序遍历)】
- LeetCode103 BinaryTreeZigzagLevelOrderTraversal(二叉树Z形层次遍历) Java题解
- 二叉树 层次遍历 (queue)遍历的变式题(leetcode)
- LeetCode(Binary Tree Level Order Traversal, 2,Zigzag)二叉树的层次遍历
- leet102. 二叉树的层次遍历