二叉树
二叉树层序遍历
题目编号:102
二叉树层序遍历
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var levelOrder = function(root) {
var r = [];
var queue = [];
queue.push(root);
var traverse = function (node) {
if (!node) return;
if (!node.floor) node.floor = 0;
if (node.left) {
node.left.floor = node.floor + 1;
queue.push(node.left);
}
if (node.right) {
node.right.floor = node.floor + 1;
queue.push(node.right);
}
!r[node.floor] && (r[node.floor] = []);
r[node.floor].push(node.val);
queue.shift();
traverse(queue[0]);
}
traverse(root);
return r;
};
总结
- 这题采用了BFS和递归实现,在使用递归的时候,出现的栈溢出的情况,因此写完代码,应该考虑到遍历两层树的情况;
- BFS算法为基石,需要其它变量辅助判断第几层,例如:
floor
。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!