我在 StackOverflow 上遇到了一些线程,但没有一个能完全消除我的疑虑。
所以问题很简单。我需要迭代地将元素插入二叉树。这是我的代码。
BST newNode(int x)
{
BSTNodePtr node = (BSTNodePtr) malloc(sizeof(struct TreeNode));
node->Element = x;
node->Left = NULL;
node->Right = NULL;
return node;
}
BST Insert(int x, BST T)
{
BST temp_node = T;
while( T != NULL) {
if (x < T->Element)
T = T->Left;
else if (x >= T->Element)
T = T->Right;
}
T = newNode(x);
return temp_node;
}
但是,当我找到这棵树的高度时,我总是得到 0。高度代码是
int Height(BST T)
{
if (T == NULL)
return 0;
return 1+(max(Height(T->Left), Height(T->Right)));
}
当我递归地插入时,这工作得很好(使用具有完全相同签名的函数)
我错过了什么?