我一直在寻找如何计算二叉搜索树的高度,我的研究使我得到了以下实现。我仍在努力思考为什么它应该起作用,但我也不确定它为什么不起作用。这是我的高度函数。
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;
当我尝试运行它时,我的程序锁定并崩溃。我错过了一些明显的东西吗?
编辑:为什么这不起作用?
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;
}
}