バイナリツリーにノードを非再帰的に追加するAdd関数を作成しています。私は、1レベルの深い二分木しか生成できないという問題に遭遇しました。私はそれをデバッグしました、そして私は問題がどこにあるかを知っていますが、それを修正する方法を理解することができません。たぶん、新鮮な目は私が見ないものを見るでしょう...問題は、私の一時ノードが新しい関数呼び出しごとにルート値にリセットされ、したがってノードが線形に追加されることです。とにかく、ここに関数があります:
void BinaryTreeNonRec::add(int num){
treeNode *temp, *parent;
if (root==NULL) {
root = new treeNode;
root->data=num;
root->left=0;
root->right=0;
temp=root;
printf("value is root \n");
} else {
temp=root;
while (temp!=NULL) {
if (num <= temp->data){
parent = temp;
temp=temp->left;
//root =temp;
printf("value is to the left \n");
} else {
parent =temp;
temp=temp->right;
//root=temp;
printf("value is to the right \n");
}
}
parent = new treeNode;
parent->data=num;
parent->left=NULL;
parent->right=NULL;
temp=parent;
}
}
どんな種類の助けにも感謝します。