JavaScript实现的打印二进制树的左视图返回错误的结果
JavaScript implementation of printing left view of binary tree is returning incorrect result
我正在尝试打印一个二叉树的左视图,就像这里在geeksfoekes上看到的那样。由于某种原因,它不起作用,我怀疑这与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();
链接页面上的代码之间的差异是
// Recur for left and right subtrees leftViewUtil(root->left, level+1, max_level); leftViewUtil(root->right, level+1, max_level);
与
leftViewUtil(root.left, ++level, max, result); leftViewUtil(root.right, ++level, max, result);
这里将level
增加两次,同时应该将相同的值传递给两个递归调用。正确使用level+1
,或者在调用之前进行增量:
++level;
leftViewUtil(root.left, level, max, result);
leftViewUtil(root.right, level, max, result);
使用哈希表在几行代码中找到树的左视图和右视图。
right_view(root,num, result) {
if(root == null) {
return 0
}
right_view(root.Left, num+1, result)
right_view(root.Right, num+1, result)
result[num] = root.Value
}
left_view(root,num, result) {
if(root == null) {
return 0
}
left_view(root.Left, num+1, result)
left_view(root.Right, num+1, result)
if(result[num] == undefined) {
result[num] = root.Value
}
}
正在调用具有根节点的函数
right_view_result = {}
right_view(root,1,right_view_result)
console.log(right_view_result)
正在调用具有根节点的函数
left_view_result = {}
left_view(root,1,left_view_result)
console.log(left_view_result)
相关文章:
- 如何在Jquery中发布后将值从视图返回到控制器
- 无法在mvc视图中使用ajax调用获取操作返回的模型对象列表
- float's未返回到移动视图结束后的位置
- 从Nodejs中的函数返回数组,并将其发送到ejs视图
- 当视图在AngularJS中返回时,我如何获得异步服务调用来更新视图
- 在主干视图中的每个方法之后是否需要“返回此内容”
- 可以'在使用Javascript/AjaxMVC之后,不会返回到任何视图
- 如何使用jsonp调用返回的数据在Durandal中呈现视图
- 如何在视图中显示json返回的linq列表
- “渲染骨干模型视图”返回未定义的结果
- 如何在返回后将状态保持为突出显示JQuery树视图的选定节点
- 在视图模型中使用 MVC 视图返回 JsonResult 数据
- 挖空映射对象未由杜兰达尔视图模型返回
- 将返回值作为主干视图方法之间的参数传递
- 如何告诉MVC 4视图返回带有子路由的JSON结果
- CanJS视图返回@@!!@@if视图包含HTML表
- JavaScript实现的打印二进制树的左视图返回错误的结果
- Backbonejs确定哪个函数从模型向视图返回了响应
- 我应该从一个简单的django AJAX视图返回什么样的响应?
- 骨干:传递模型属性给视图返回未定义