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

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值