我是新来的页面,我真的坚持在我的大学的作业重新创建一个函数,插入节点到树没有递归。我已经给了递归方法,我需要将其转换为迭代。这是给定的递归代码:二元搜索树插入C无递归
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;
}
和我做了这一个:
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;
}
它工作的第一要素,但它不保存其余的元素。 任何想法? 在此先感谢
对于非根情况,您的代码永远不会将'newnode'指针指定为树中已有节点的子节点。 –
@Roux,虽然他可能打算这样做,但它不会解决他的问题,因为'temp'只是一个局部变量。 –