非再帰的な方法で要素を挿入するバイナリ ツリー コードを作成しました。コードが意図したとおりに機能していません。コードを何度デバッグしても、何も問題はないように見えますが、間違った結果が得られます。皆さんが助けてくれることを願っています。前もって感謝します。
void insert(int element){
if(root == NULL){
struct elemq *node;
node = (struct elemq *)malloc(sizeof(struct elemq));
node->ele = element;
node->left = NULL;
node->right = NULL;
root = node;
cout << root->ele << "\n";
}
else{
struct elemq *ref;
ref = root;
while(ref != NULL){
if(element <= ref->ele){
if(ref->left == NULL){
struct elemq *node;
node = (struct elemq *)malloc(sizeof(struct elemq ));
node->ele = element;
node->left = NULL;
node->right = NULL;
ref->left = node;
break;
}
else{
ref = ref->left;
}
}
else if(element > ref->ele){
if(ref->right == NULL){
struct elemq *node;
node = (struct elemq *)malloc(sizeof(struct elemq ));
node->ele = element;
node->left = NULL;
node->right = NULL;
ref->right = node;
break;
}
else{
ref = ref->right;
}
}
}
}
}
要素を挿入しようとするたびにroot
、最初だけでなく、各要素が として扱われます。ですから、毎回、条件if(root == NULL)
はtrue
. root
グローバル変数として宣言しNULL
、 in に初期化しましたmain()
。cout <<
私は最初のif()
条件を入れてこれを知るようになりました。以前の投稿をこの新しい質問に変更しました。