Node* insert(Node *node,int key)
{
if(node==NULL)
return new Node(key);
else if(node->key==key)
node->key=key;
else if(key<node->key)
node->left=insert(node->left,key);
else if(key>node->key)
node->right=insert(node->right,key);
}
这是在二叉树中插入元素的代码,在这里省略了key所对应的value的值,此形式是递归写的。
如果现在,在一个空二叉树中开始插入元素,第一个插入10,第二个插入9。
则形成了靠左有两个元素的树,当我插入第三个元素8的时候。
node->left=insert(node->left,key);
还是需要向左插入,但是这行代码将会在递归过程中返回给第一个节点的左指针一个数值,但是并没有显示的写出来返回值是什么。
那么作指针将被赋予什么样的地址,但是实际运行时并未造成什么错误,这是为什么?此外我写了一个例子。
int *fun(int *root1,int *root2)
{
if(*root1>*root2)
return root1;
}
int *root=NULL,root1=10,root2=20;
printf("%d ",root);
fun(&root1,&root2);
printf("%d",root);
在我的电脑上这两个输出的数值是不一样的。。。