【发布时间】:2016-03-28 04:16:08
【问题描述】:
我正在尝试打印二叉树的左视图,如 geeksforgeeks 上的 here 所示。由于某种原因它不起作用,我怀疑它与max_level 有关。结果是[ 12, 10, 30, 25, 40 ],我期待[12,10,25]。
JS代码
var Node = function(val) {
this.val = val;
this.left = this.right = null;
};
var leftViewUtil = function(root, level, max, result) {
if (root === null) return;
if (max.level < level) {
max.level = level;
result.arr.push(root.val);
}
leftViewUtil(root.left, ++level, max, result);
leftViewUtil(root.right, ++level, max, result);
};
var leftView = function(root) {
var result = {
arr: []
};
var max_level = {level: 0};
leftViewUtil(root, 1, max_level, result);
return result.arr;
};
root = new Node(12);
root.left = new Node(10);
root.right = new Node(30);
root.right.left = new Node(25);
root.right.right = new Node(40);
var run = function() {
console.log(leftView(root));
};
run();
【问题讨论】:
-
翻译代码时不应删除 cmets :-)
-
Facebook 面试准备中的编码练习,
number of visible nodes
标签: javascript node.js recursion binary-tree