2 yure1333 yure1333 于 2013.10.03 11:41 提问

C语言二叉树中一个二级指针函数问题

static BSTREE_NODE** find(int data, BSTREE_NODE** root){
39 if(! *root) return root;
40 else if(data == (*root)->data) return root;
41 else if(data < (*root)->data)
42 return find(data,&(*root)->left);
43 else return find(data,&(*root)->right);
44 }

如果该二级指针函数改成一级指针函数好像不影响结果吧?这里只要传递出搜索结果的地址就可以了
改成如下一级指针的函数

static BSTREE_NODE* find(int data, BSTREE_NODE* root){
39 if( !root ) return root;
40 else if(data == root->data) return root;
41 else if(data < root->data)
42 return find(data, root->left);
43 else return find(data,root->right);
44 }

1个回答

DoctorCZM
DoctorCZM   2013.12.23 11:19

您好,针对您上述的情况,改成一级指针是可以的。
用一个指针指向根结点,而在进行find操作时没有修改该树,只是进行查找,找到就返回到到结点的地址,所以用一级指针是可行的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!