Пожалуйста, расскажите, как я могу создать двоичное дерево. Я искал google, но каждый раз, когда я нашел двоичное дерево поиска. Вот мой код.Как создать двоичное дерево (не двоичное дерево поиска)
bool createTree(node* Tree,int d)
{
bool ret_val=FALSE;
if(Tree->d==-1)
{
Tree->d=d;
return TRUE;
}
else
{
node* temp=(node*)malloc(sizeof(node*));
if (temp==NULL)
return FALSE;
temp->l=NULL;
temp->r=NULL;
temp->d=d;
if(Tree->l==NULL)
{
Tree->l=temp;
return TRUE;
}
else if(Tree->r==NULL)
{
Tree->r=temp;
return TRUE;
}
else
{
ret_val=createTree(Tree->l,d);
if(ret_val)
return TRUE;
else
return createTree(Tree->r,d);
}
return FALSE;
}
}
После выполнения вы можете увидеть, что значение присваиваются дерево слева и продолжает идти в левую часть дерева. Пожалуйста, помогите мне заполнить мое двоичное дерево.
В чем проблема? Вы получаете неправильный результат? Каков ожидаемый результат? Если вы хотите, чтобы мы помогли вам понять, что не так, чем дать некоторые подробности. – StoryTeller
Возможно, эта последовательность кода не работает так, как вы хотите? 'TEMP-> л = NULL; TEMP-> г = NULL; если (Tree-> л == NULL) ...; else if (Tree-> r == NULL) ...; else ret_val = createTree (Tree-> l, d); ... ' – mah
В чем разница между« двоичным деревом »и« деревом двоичного поиска »? –