码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode—102 Binary Tree Level Order Traversal(二叉树的层次遍历)

时间:2015-06-03 11:59:49      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:leetcode   算法   java   binary tree level or   linkedlist基本用法   

Binary Tree Level Order Traversal Total Accepted: 51429 Total Submissions: 174478 
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]
]
confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.


Hide Tags: Tree  Breadth-first Search(广度优先遍历)


解题思路:
广度遍历而且要记录每一层。广度遍历利用队列实现,记录用列表实现

使用一个列队,一个列表。 列队用于记录每一层节点,列表用于存储每一层的节点


/**
 * Definition for a binary tree node.
 * public class TreeNode 
 * {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */

	public List<List<Integer>> levelOrder(TreeNode root)
	{
		List<List<Integer>> list=new LinkedList<List<Integer>>();
		//如果根节点为空,返回list
		if(root==null)
		{
			return list;
		}
		//创建一个列队Queue<TreeNode>,用于存放所有节点
		Queue<TreeNode> currentlevel=new LinkedList<TreeNode>();
		currentlevel.add(root);
		
		while (!currentlevel.isEmpty())
		{
			//创建一个List<Integer>用于记录当前层所有节点的值
			List<Integer> currentList=new LinkedList<Integer>();
			//size为当前层节点的个数
			int size=currentlevel.size();
			for (int i = 0; i < size; i++)
			{
				//poll()获取并移除此列表的头(第一个元素)
				TreeNode currentNode=currentlevel.poll();
				//记录每一层的节点值到List<Integer>中
				currentList.add(currentNode.val);
				if(currentNode.left!=null)
				{
					currentlevel.add(currentNode.left);
				}
				if (currentNode.right!=null)
				{
					currentlevel.add(currentNode.right);
				}
			}
			//将当前List<Integer>添加到List<List<Integer>>中
			list.add(currentList);
		}
		return list;
	}


leetcode—102 Binary Tree Level Order Traversal(二叉树的层次遍历)

标签:leetcode   算法   java   binary tree level or   linkedlist基本用法   

原文地址:http://blog.csdn.net/zzc8265020/article/details/46341803

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!