如何二叉树里面查找一个数

一、在二叉树里面查找一个数主要是用到的是递归的思想,或者结构题指针思想

具体思路结合代码理解

二、代码如下

示例一:
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和结构体指针传子树的思想,通过不断的判断直到找到那个数再退出。

欢迎交流
如何二叉树里面查找一个数_第1张图片

你可能感兴趣的:(数据结构,C语言编程,二叉树,AVL数,二叉搜索树,结构体指针,数据结构)