Ich bin neu auf der Seite und ich bin wirklich fest an den Hausaufgaben meiner Universität, um eine Funktion neu zu erstellen, die Knoten in den Baum ohne Rekursion einfügt. Mir wurde die Rekursive Methode gegeben und ich muss sie in Iterativ konvertieren. Dies ist der gegebene rekursive Code:Binäre Suchbaumeinfügung C ohne Rekursion
TreeNode *InsertTree(TreeNode *root, TreeNode *newnode)
{
if (!root)
{
root = newnode;
root->left = root->right=NULL;
}
else if (newnode->entry < root->entry)
{
root->left = InsertTree(root->left, newnode);
}
else
{
root->right = InsertTree(root->right, newnode);
}
return root;
}
und ich machte diese:
TreeNode *InsertTree(TreeNode *root, TreeNode *newnode)
{
if (!root)
{
root = newnode;
root->left = root->right=NULL;
}
else
{
TreeNode * temp = root, *prev = NULL;
while(temp)
{
if (temp->entry < newnode->entry)
temp = temp->right;
else
temp = temp->left;
}
newnode;
temp->left = temp->right = NULL;
}
return root;
}
es für die ersten Elemente funktioniert, aber es speichert nicht die übrigen Elemente. Irgendwelche Ideen? Vielen Dank im Voraus
Für den Nicht-Root-Fall weist Ihr Code den "newnode" -Zeiger niemals als Kind eines Knotens zu, der sich bereits in der Struktur befindet. –
@Roux, obwohl er das vielleicht beabsichtigt hatte, würde es sein Problem nicht lösen, weil 'temp' nur eine lokale Variable ist. –