Binary Tree Level Order Traversal

题目描述:

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;
    }
}

你可能感兴趣的:(java,LeetCode,tree,队列,层次遍历)