一、在二叉树里面查找一个数主要是用到的是递归的思想,或者结构题指针思想
具体思路结合代码理解
二、代码如下
示例一: int avl_search(AVLTree root, int value){ if(root==NULL){ printf("\nNO find the element\n") } else if(root->data==value) printf("%d",root->data); //打印找到的数 else if(value>root->data){ printf("%d->",root->data); //打印轨迹 avl_search(root->rchild,value); //递归 } else { printf("%d->",root->data); //打印轨迹 avl_search(root->lchild, value); //递归 } } 示例二: while(root!=NULL) { if (root->data == value){ printf("%d", root->data); break; } else if (value > root->data){ printf("%d->", root->data); root = root->rchild; //传子树地址 } else{ printf("%d->", root->data); root = root->lchild; //传子树地址 } } }
三、运行结果如下
找到69这个数
四、总结
第一段代码:当函数进入第一个if 或者第一个else if ,则函数就会不断退出递归;
当函数进入第二个else if ,或者最后一个else时,则函数还在不断进入递归;
第二段代码:这段代码使用的是while和结构体指针传子树的思想,通过不断的判断直到找到那个数再退出。
欢迎交流