层次输出二叉树

var levelOrder = function(root) {
	if (!root) return [];
	let queue = [];
	let res = [];
	let level = 0;
	queue.push(root);
	let temp;
	while (queue.length) {
		res.push([]);
		let size = queue.length; // 注意一下: 
		size--; //在层次遍历中是一个非常重要的技巧 
		while (size--) {
			// 出队 
			let front = queue.shift();
			res[level].push(front.val); // 入队 
			if (front.left) queue.push(front.left);
			if (front.right) queue.push(front.right);
		}
		level++;
	}
	return res;
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
叉树层次遍历是一种广度优先搜索的算法,可以使用队列来实现。以下是一个示例的二叉树层次遍历输出的代码: ```python class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def levelOrder(root): if not root: return [] result = [] queue = [root] while queue: level = [] size = len(queue) for _ in range(size): node = queue.pop(0) level.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) result.append(level) return result ``` 这段代码中,我们定义了一个`TreeNode`类来表示二叉树的节点。`levelOrder`函数接受一个二叉树的根节点作为参数,返回一个二维列表,表示二叉树层次遍历结果。 在函数内部,我们首先判断根节点是否为空,如果为空则直接返回空列表。然后初始化一个空列表`result`用于存储最终的结果,以及一个队列`queue`用于辅助层次遍历。 接下来,我们使用一个循环来进行层次遍历。在每一层的循环中,我们首先创建一个空列表`level`用于存储当前层的节点值。然后获取当前队列的长度`size`,表示当前层的节点个数。 接着,我们使用一个内部循环来遍历当前层的节点。在每次循环中,我们从队列中弹出一个节点,并将其值添加到`level`列表中。然后判断该节点是否有左右子节点,如果有则将其左右子节点加入队列。 内部循环结束后,将`level`列表添加到`result`列表中,表示当前层的节点值已经遍历完。 最后,当队列为空时,表示所有层的节点都已经遍历完毕,我们返回`result`列表作为最终的结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值