var count = function(tree) {
var stack = [];
var count = 0;
for (var node = tree; node; count++, node = stack.pop()) {
if (node.left) stack.push(node.left);
if (node.right) stack.push(node.right);
}
return count;
};
上面的代码工作并返回二叉树中的节点数。
我很困惑这是如何工作的。不var stack = [];
创建空数组?
如果是这样,在 for 循环中设置时 node 是否不会变为 0,从而使两个 if 语句都返回 false 并且不运行?
编辑:我刚刚意识到代码node = stack.pop()
在循环体结束之前不会被执行。因此,直到该点的节点将包含传递到过程中的当前节点(从头节点开始)。
为这个平凡的问题道歉,我想该睡觉了