按层次遍历二叉树
package acmTest;

import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

//层次遍历二叉树利用了辅助队列
public class BinaryTreeLevelOrderTraversal {
	public static List<List<Integer>> levelOrder(TreeNode root){
		Queue<TreeNode> queue = new LinkedList<TreeNode>();
		List<List<Integer>> wrapList = new LinkedList<List<Integer>>();
		if(root == null){
			return wrapList;
		}
		//先将根元素入队列
		queue.offer(root);
		while(!queue.isEmpty()){
			int levelNum = queue.size();
			List<Integer> subList = new LinkedList<Integer>();
			for(int i = 0; i < levelNum; i++){
				if(queue.peek().left != null){
					queue.offer(queue.peek().left);
				}
				if(queue.peek().right != null){
					queue.offer(queue.peek().right);
				}
				//返回队列的头部也就是上层的元素
				subList.add(queue.poll().val);
			}
			wrapList.add(subList);
		}
		return wrapList;
	}

}

阅读更多
个人分类: leetcode刷题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

按层次遍历二叉树

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭