C/C++知识点之C语言实现常用数据结构——二叉树
小标 2018-10-10 来源 : 阅读 1443 评论 0

摘要:本文主要向大家介绍了C/C++知识点之C语言实现常用数据结构——二叉树,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之C语言实现常用数据结构——二叉树,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

              

#include
#include
#define SIZE 10
typedef struct Tree {
    int data;
    struct Tree *left;
    struct Tree *right;
} tree;



int find(tree *t,int x) {
    int i=0;
    if(t==NULL) {
        return -1;
    }
    if(t->data==x) {
        return i;
    } else if(xdata) {
        i++;
        find(t->left,x);
    } else if(x>t->data) {
        i++;
        find(t->right,x);
    }
}

tree *findMin(tree *t) {
    if(t==NULL) {
        return NULL;
    } else if(t->left==NULL) {
        return t;
    } else {
        return findMin(t->left);
    }
}

int findMax(tree *t) {
    if(t!=NULL) {
        while(t->right!=NULL) {
            t=t->right;
        }
    }
    return t->data;
}

tree *init(tree *t,int x) {
    if(t==NULL) {
        t=malloc(sizeof(tree));
        t->data=x;
        t->left=NULL;
        t->right=NULL;
        return t;
    } else if(t->left ==NULL) {
        t->left=init(t->left,x);
        return t;
    } else {
        t->right=init(t->right,x);

        return t;
    }
}



tree *insertSort(tree *t,int x) {
    if(t==NULL) {
        t=malloc(sizeof(tree));
        t->data=x;
        t->left=NULL;
        t->right=NULL;
    } else if(x < t->data) {
        t->left=insertSort(t->left,x);
    } else if(x > t->data) {
        t->right=insertSort(t->right,x);
    }
    return t;
}


tree *delete(tree *t,int x) {
    tree *temp;
    if(t==NULL) {
        printf("error,element not found!");
    } else if( x < t->data ) {/*go left*/
        t->left=delete(t->left,x);
    } else if( x > t->data ) {/*go right*/
        t->right=delete( t->right,x );
    } else if( t->left && t->right) { /*t->data==x and t has two children*/
        temp=findMin( t->right );
        t->data=temp->data;
        t->right=delete( t->right,t->data );
    } else {/*one or zero children */
        temp=t;
        if( t->left==NULL) {
            t=t->right;
        } else if( t->right == NULL ) {
            t=t->left;
        }
        free(temp);
    }
    return t;
}

void preTravel(tree *t) {
    if(t==NULL) {
        return;
    }
    printf("%d ",t->data);
    preTravel(t->left);
    preTravel(t->right);
}

void midTravel(tree *t) {
    if(t==NULL) {
        return;
    }
    midTravel(t->left);
    printf("%d ",t->data);
    midTravel(t->right);
}

void postTravel(tree *t) {
    if(t==NULL) {
        return;
    }
    postTravel(t->left);
    postTravel(t->right);
    printf("%d ",t->data);
}

main() {
    tree *t;
    int i;
    for(i=0; i<SIZE; i++) {
        t=init(t,i);
    }
    preTravel(t);
    printf("\n");
    midTravel(t);
    printf("\n");
    postTravel(t);
}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved