【发布时间】:2021-06-26 14:57:36
【问题描述】:
为什么下面的代码有效
const inorderTraversal = (root) => {
let out = []
const traverse = (node) => {
console.log(node)
if (!node) return
traverse(node.left)
out.push(node.val)
traverse(node.right)
}
traverse(root)
return out
};
但是这个没有
const inorderTraversal = (root) => {
let out = []
const traverse = (node,arr) => {
if (!node) return
traverse(node.left)
arr.push(node.val)
traverse(node.right)
}
traverse(root,out)
return out
};
我需要修改多棵二叉树的算法,但是当将数组作为参数而不是全局变量发送时,我收到 Cannot read property 'push' of undefined 错误。
【问题讨论】:
-
arr是traverse函数的第二个参数。当您调用traverse(node.left)或traverse(node.right)时,您只传递了一个参数。 -
你不要在
traverse(node.left)和traverse(node.right)中传递arr作为第二个参数,应该是traverse(node.left, arr)和traverse(node.right, arr)
标签: javascript tree inorder