数据结构之排序二叉树递归建立,递归查找

导读:本篇文章讲解 数据结构之排序二叉树递归建立,递归查找,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define ElemType int
#define maxsize 20
typedef struct BSTNode
{
    ElemType data;
    struct BSTNode* lchild;
    struct BSTNode* rchild;
}*BSTTree,BSTNode;
int jjj=0;
//----------------中序遍历二叉树---------------
void InOrderTraverse(BSTTree bt)
{
    if(bt!=NULL)
    {
        InOrderTraverse(bt->lchild);
        printf("%d ",bt->data);
        InOrderTraverse(bt->rchild);
    }
}
//--------------二叉排序树的插入(递归)------------------
BSTTree BSTInsert(BSTTree t,ElemType x)
{
    if(t==NULL)
    {
        BSTNode* p=(BSTNode*)malloc(sizeof(BSTNode));
        p->data=x;
        p->lchild=NULL;
        p->rchild=NULL;
        t=p;
        return t;
        //printf("%d ",t->data);
    }
    else if(x<t->data)
        t->lchild=BSTInsert(t->lchild,x);
    else if(x>t->data)
        t->rchild=BSTInsert(t->rchild,x);
   // return true;
}

//-----------------二叉排序树的建立-------------
BSTTree BSTCreat(BSTTree t,ElemType* arr,int len)
{
    int i=0;
    for(i=0;i<len;i++)
    {
        t=BSTInsert(t,*(arr+i));
    }
    return t;
}
//------------二叉排序树的递归查找-------------
BSTNode* BSTFind(BSTTree t,ElemType x)
{
    if(!t)
        return NULL;
    else if(x<t->data)
        return BSTFind(t->lchild,x);
    else if(x>t->data)
        return BSTFind(t->rchild,x);
    else
        return t;

}
int main()
{
    BSTTree t=NULL;
    BSTNode* p;
    ElemType arr[6]={6,4,10,5,9,11};
    t=BSTCreat(t,arr,6);
    printf("二叉树中序遍历\n");
    InOrderTraverse(t);
    p=BSTFind(t,5);
    printf("\n%d ",p->data);


}

这里写图片描述

【注意】注意递归函数返回值的问题

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/10394.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!