gpt4 book ai didi

javascript - 我的二叉树 CountHeight 函数有什么问题 (Javascript)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:52 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com