关闭

Binary Tree Level Order Traversal

标签: javaleetcodetree层次遍历队列
98人阅读 评论(0) 收藏 举报
分类:

题目描述:

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]
]
层次遍历用队列解决。注意一点是用一个level来存储层次信息,代码如下:

class Node{
	int level;
	TreeNode treenode;
	public Node(int level,TreeNode treenode){
		this.level = level;
		this.treenode = treenode;
	}
}
 
public class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
		List<List<Integer>> result = new ArrayList<List<Integer>>();
		if(root == null)
			return result;
		ArrayDeque<Node> queue = new ArrayDeque<Node>();
		queue.add(new Node(1, root));
		while(!queue.isEmpty()){
			Node node = queue.pop();
			if(node.level>result.size()){
				List<Integer> list = new ArrayList<Integer>();
				list.add(node.treenode.val);
				result.add(list);
			}else
				result.get(node.level-1).add(node.treenode.val);
			if(node.treenode.left!=null)
				queue.add(new Node(node.level+1,node.treenode.left));
			if(node.treenode.right!=null)
				queue.add(new Node(node.level+1,node.treenode.right));
		}
		return result;
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:49894次
    • 积分:2622
    • 等级:
    • 排名:第15332名
    • 原创:215篇
    • 转载:37篇
    • 译文:0篇
    • 评论:5条
    最新评论