【leetcode】Tree——Binary Tree Level Order Traversal(102)

题目:

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,null,null,15,7],
    3
   / \
  9  20
      /  \
   15   7
return its level order traversal as:
[
  [3],
  [9,20],
  [15,7]
]

思路1:BFS

针对每一层就行操作的话。注意,不能直接在for里面写for(int i=0;i<queue.size();i++),因为在for内部,会向queue offer元素,导致长度改变,for循环会出问题。

while(!queue.isEmpty()){

int size = queue.size();

for(int i=0;i<size;i++){

*****

queue.offer(element);

*****

}

}

代码1:

public List<List<Integer>> levelOrder_BFS(TreeNode root) {
	List<List<Integer>> results = new ArrayList<List<Integer>>();
	if(root==null){
		return results;
	}
	
	Queue<TreeNode> q = new LinkedList<TreeNode>();
	q.offer(root);
	
	while(!q.isEmpty()){
		List<Integer> list = new ArrayList<Integer>();
		int size = q.size();
		for(int i=0;i<size;i++){
			TreeNode curNode = q.poll();
			list.add(curNode.val);
			
			if(curNode.left!=null)
				q.offer(curNode.left);
			if(curNode.right!=null)
				q.offer(curNode.right);
		}
		results.add(list);
	}
	
    return results;
}

思路2:DFS

DFS得记录当前的层数,然后在results对于层的list里面添加元素

代码2:

public List<List<Integer>> levelOrder_DFS(TreeNode root) {
	List<List<Integer>> results = new ArrayList<List<Integer>>();
	if(root==null){
		return results;
	}
	level(root,results,1);
	
    return results;
}

private void level(TreeNode root, List<List<Integer>> results,int level){
	if(results.size()<level){
		results.add(new ArrayList<Integer>());
	}
	results.get(level-1).add(root.val);
	if(root.left!=null)
		level(root.left,results,level+1);
	if(root.right!=null)
		level(root.right,results,level+1);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值