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));
答案 0 :(得分:0)
您可以使用Math.max
来缩小后续条件,以获得左侧和右侧的最大深度。
function countHeight(root) {
return root
? 1 + Math.max(countHeight(root.left), countHeight(root.right))
: 0;
}