我一直在尋找如何計算二叉搜索樹的高度,我的研究已經引導我進入下面的實現。我仍然試圖圍繞爲什麼它應該起作用,但我也不確定它爲什麼不起作用。這是我的身高功能。計算二叉搜索樹的高度
int BinaryTreeNode::height() const {
int lefth = left->height();
int righth = right->height();
if(lefth > righth) {
return lefth + 1;
} else {
return righth + 1;
}
}
,這裏是爲節點
class BinaryTreeNode {
public:
Data * nodeData;
BinaryTreeNode * left;
BinaryTreeNode * right;
我的類定義當我嘗試運行我的程序locksup和崩潰。我錯過了明顯的東西嗎?
編輯:爲什麼不應該這樣工作?
int BinaryTreeNode::height() const {
int l = 0;
if (left != NULL) {
left->height();
}
int r = 0;
if (right != NULL) {
right->height();
}
if (l > r) {
return l + 1;
}
else {
return r + 1;
}
}
你可以使用調試器嗎? – Synxis
您錯過了基本案例。沒有基礎案例,你會遇到無限遞歸。 – us2012
你做的第一件事是再次調用'height()',你有一個無限循環/ –