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)));
}
これは、再帰的に挿入する場合(まったく同じシグネチャを持つ関数を使用して)、完全に正常に機能します。
私は何が欠けていますか?