剑指offer | 从上到下打印二叉树 返回非零【JavaScript】
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
其实就是一个层序遍历的简单应用,但是由于对空结点返回的值错误,导致这题卡了很久...
错误代码
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function PrintFromTopToBottom(root)
{
if (!root) return null;
var queue = [];
var node;
var res = [];
queue.push(root);
while(queue.length !== 0){
node = queue.shift();
res.push(node.val);
if (node.left)
queue.push(node.left);
if (node.right)
queue.push(node.right);
}
return res;
}
第八行无论返回的是null还是undefined,都会报错:
检查了很久的语法错误,括号是不是中文的啦是不是又把1打成叹号了啊,都没用。最后灵光一闪把null改成[]
后就通过了......
正确代码
function PrintFromTopToBottom(root)
{
if (!root) return [];
var queue = [];
var node;
var res = [];
queue.push(root);
while(queue.length !== 0){
node = queue.shift();
res.push(node.val);
if (node.left)
queue.push(node.left);
if (node.right)
queue.push(node.right);
}
return res;
}