作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
var CountHeight = function(root){
if(root == null){
console.log("NULL!")
return 0;
}
leftheight = CountHeight(root.left);
rightheight = CountHeight(root.right);
if (leftheight > rightheight){
return leftheight + 1;
} else if(rightheight > leftheight){
return rightheight + 1;
} else if(rightheight == leftheight){
return leftheight + 1;
}
}
每个根都有一个指向另一棵树的左值和右值。
我试图通过插入一棵树来测试这个函数(我知道该函数接受一个名为 root 的参数,但我基本上是将一棵树传递给它)。我传递的树看起来像这样:
(root)10: (leftofroot)left: 4 - left: null right: 8
(rightofroot)right: 15 - left: null right: null
如果你不能按照上面的图来做,我基本上是在我的树上添加以下节点:10、4、15、8
好的,所以当我将我的树传递给函数时,我得到了值 2,但显然我的树的高度为 3。节点 8 是唯一一个深度为 3 的节点。
那么有人可以告诉我我的功能出了什么问题吗?
PS:我很纠结,如果我的问题太令人困惑,有人可以给我另一个函数,当我将一棵树传递给它时,它可以找到树的高度。
谢谢!
var testBST = new BST();
testBST.addNode(10);
testBST.addNode(4);
testBST.addNode(15);
testBST.addNode(8);
console.log(testBST);
console.log(CountHeight(testBST));
最佳答案
您可以使用 Math.max
缩小后面的条件以获得左侧和右侧的最大深度。
function countHeight(root) {
return root
? 1 + Math.max(countHeight(root.left), countHeight(root.right))
: 0;
}
关于javascript - 我的二叉树 CountHeight 函数有什么问题 (Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48734517/
var CountHeight = function(root){ if(root == null){ console.log("NULL!") return 0;
我是一名优秀的程序员,十分优秀!