如何以递归方式在二叉树中执行插入,以便始终从左侧填充???以下是我写的代码当然是错误的......我在递归方面有点弱......请提供你的建议......
void insert(node **root,int n)
{
node *temp;
temp=(node *)malloc(sizeof(node));
temp->data=n;
temp->lchild=NULL;
temp->rchild=NULL;
if(*root==NULL)
{
*root=temp;
return;
}
if((*root)->lchild==NULL)
{
(*root)->lchild=temp;
return;
}
if((*root)->rchild==NULL)
{
(*root)->rchild=temp;
return;
}
insert(&((*root)->lchild),n);
insert(&((*root)->rchild),n);
return;
}
答案 0 :(得分:0)
malloc
的返回值强制转换为C程序。n
插入两个子树。答案 1 :(得分:0)
尝试迭代方式。另外,根据上述用户的建议,你会得到一个像left-> left-> left等的列表。
如果你以迭代方式进行wana接近
public void insert(String data)
{
if(node == null)
node = new Node(null,data,null);
else
{
Queue<Node> q = new LinkedList<Node>();
q.add(node);
while(q.peek() != null)
{
Node temp = q.remove();
if(temp.left != null)
q.add(temp.left);
else
{
temp.left = new Node(null,data,null);
break;
}
if(temp.right != null)
{
q.add(temp.right);
}
else
{
temp.right = new Node(null,data,null);
break;
}
}
}
}
上面的代码是Java。我想它很容易在C中实现。