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

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

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


具体思路结合代码理解


二、代码如下

示例一:
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这个数


5d40afd3e4e74834a34fe8ef3b665553.png


四、总结


第一段代码:当函数进入第一个if 或者第一个else if ,则函数就会不断退出递归;

当函数进入第二个else if ,或者最后一个else时,则函数还在不断进入递归;


第二段代码:这段代码使用的是while和结构体指针传子树的思想,通过不断的判断直到找到那个数再退出。


欢迎交流


相关文章
|
3月前
|
人工智能 测试技术 Windows
【深度优先搜索】【树】【状态压缩】2791. 树中可以形成回文的路径数
【深度优先搜索】【树】【状态压缩】2791. 树中可以形成回文的路径数
|
8月前
|
算法 测试技术 C#
C++二分查找算法:查找和最小的 K 对数字
C++二分查找算法:查找和最小的 K 对数字
|
10月前
【Leetcode -1609.奇偶树 -1122.数组的相对排序】
【Leetcode -1609.奇偶树 -1122.数组的相对排序】
36 0
|
10月前
【Leetcode -1171.从链表中删去总和值为零的连续节点 -1669.合并两个链表】
【Leetcode -1171.从链表中删去总和值为零的连续节点 -1669.合并两个链表】
86 0
|
3月前
leetcode代码记录(完全二叉树的节点个数
leetcode代码记录(完全二叉树的节点个数
18 1
|
10月前
【LeetCode】1609. 奇偶树、1122. 数组的相对排序
1609. 奇偶树 1609. 奇偶树 题目描述:
41 0
|
10月前
|
算法 DataX C语言
【数据结构】二叉树的节点数,叶子数,第K层节点数,高度,查找x节点,判断是否为完全二叉树等方法【下】
六、二叉树叶子节点个数 1.代码: 2.测试结果: 七、二叉树第k层节点个数 1.代码: 2.测试结果: 八、二叉树查找值为x的节点 1.代码: 2.测试结果: 九、判断二叉树是否是完全二叉树 1.代码: 2.测试结果: 十、补充:队列代码 Queue.h Queue.c
|
10月前
|
算法 C语言
【数据结构】二叉树的节点数,叶子数,第K层节点数,高度,查找x节点,判断是否为完全二叉树等方法【上】
文章目录 一、二叉数的结构体 二、构建二叉树,供后续测试使用 三、二叉树销毁 四、构建节点 五、二叉树的高度: 1.代码: 2.测试结果: 二叉树节点个数 1.代码: 2.测试结果:
|
3月前
leetcode-373:查找和最小的 K 对数字
leetcode-373:查找和最小的 K 对数字
32 0