二叉树的层级遍历PHP,二叉树层级遍历

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:57   3202   0

LintCode 二叉树层级遍历

解题思路:队列(先进先出)

将每层的节点插入到队列中, 然后遍历队列,再将下一层级的节点插入到队列中, 直到最后

如图中二叉树

2801bbd32842

image

先将根节点放入队列中如下图

2801bbd32842

image

然后遍历队列,循环取出队头元素,再将队元元素的左右节点放入到队列中,如下图

2801bbd32842

image

如此循环直到二叉树最深层级

代码如下:

public List> levelOrder(TreeNode root) {

Queue queue = new LinkedList();

List> tree = new ArrayList>();

if(root == null)

return tree;

queue.offer(root);

while(!queue.isEmpty()){

ArrayList list = new ArrayList();

int size = queue.size();

for(int i=0;i

TreeNode head = queue.poll();

list.add(head.val);

if(head.left!=null){

queue.offer(head.left);

}

if(head.right!=null){

queue.offer(head.right);

}

}

tree.add(list);

}

return tree;

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP