我在计算二叉树高度的逻辑之间有点混淆。混淆 - 二叉树高度
代码1
public static int findHeight(Tree node) {
if(node == null)
return 0;
else {
return 1+Math.max(findHeight(node.left), findHeight(node.right));
}
}
代码2
public static int findHeight(Tree node) {
if(node == null)
return -1;
else {
return 1+Math.max(findHeight(node.left), findHeight(node.right));
}
}
我认为,第二个是正确的,因为它给出了下面的代码正确答案: -
Tree t4 = new Tree(4);
Tree t2 = new Tree(2);
Tree t1 = new Tree(1);
Tree t3 = new Tree(3);
Tree t5 = new Tree(5);
t4.left = t2;
t4.right = t5;
t2.left = t1;
t2.right = t3;
// Prints "Height : 2" for Code 2
// Prints "Height : 3" for Code 1
System.out.println("Height : " + findHeight(t4));
我很混淆ED,因为许多其他SO答案的显示逻辑,用于计算高度按码1
矛盾逻辑
UPDATE:
所有,我对于确切的东西有一个基本的疑问树的高度?
1.它是否是树的根节点和最深节点之间的节点(包括两个 - 根&最深的节点)?
2.树的根节点和最深节点之间是否有边界?
OR
3,它是实现每个人的只是事情 - 这两种方法是正确的?
但是没有问题。 – Maroun
检查更新! – tmgr
这是一个完全任意的定义。你想要的高度是边数还是节点数?只要你一致,一切都会解决。 – Teepeemm