前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >补充一下代码

补充一下代码

作者头像
可爱见见
发布2019-09-09 16:28:49
2450
发布2019-09-09 16:28:49
举报
文章被收录于专栏:卡尼慕卡尼慕

这是数据结构的第8篇文章

存储结构

代码语言:javascript
复制
typedef int myType;

typedef struct treeNode 
{
    myType element;     //值域元素
    struct treeNode *lchild;    //左孩子
    struct treeNode *rchild;    //右孩子
}Btree;

创建二叉树

代码语言:javascript
复制
void createTree(Btree **T)  //传入一个Btree的指针的地址
{
    myType data;
    scanf("%d", &data);

    if(data == -1) {    //-1代表终端节点值
        *T = NULL;
    } else {
        *T = (Btree *)malloc(sizeof(struct treeNode));  
        (*T)->element = data;
        printf("请输入%d的左孩子节点:", data);
        createTree(&((*T)->lchild));
        printf("请输入%d的右孩子节点:", data);
        createTree(&((*T)->rchild));
    }
}

先序遍历

代码语言:javascript
复制
void preOrder(Btree *T)
{
    if(T != NULL) {
        printf("%d ", T->element);  //访问根节点
        preOrder(T->lchild);    //先根序遍历左子树
        preOrder(T->rchild);    //先根序遍历右子树
    }
} 

中序遍历

代码语言:javascript
复制
void inOrder(Btree *T)
{
    if(T != NULL) {
        inOrder(T->lchild);     //中根序遍历左子树
        printf("%d ", T->element);  //访问根节点 
        inOrder(T->rchild); //中根序遍历右子树
    }
}

后序遍历

代码语言:javascript
复制
void postOrder(Btree *T)
{
    if(T != NULL) {
        postOrder(T->lchild);   //后根序遍历左子树
        postOrder(T->rchild);   //后根序遍历右子树
        printf("%d ", T->element);  //访问根节点
    }
}

销毁二叉树

代码语言:javascript
复制
void distroyTree(Btree **T)
{
    Btree *pl, *pr;
    if((*T) == NULL) {
        return ;
    } else {
        pl = (*T)->lchild;  //保存左孩子的地址
        pr = (*T)->rchild;  //保存右孩子的地址
        (*T)->lchild = NULL;
        (*T)->rchild = NULL;
        free(*T);   //释放根节点
        (*T) = NULL;
        distroyTree(&pl);   //递归销毁
        distroyTree(&pr);
    }
}

二叉树的深度

代码语言:javascript
复制
int tree_deep(Btree *T)
{
    int deep = 0;
    if(T) {
        int leftdeep = tree_deep(T->lchild);    
        int rightdeep = tree_deep(T->rchild);
        deep = leftdeep > rightdeep ? leftdeep+1 : rightdeep+1;
    }

    return deep;
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卡尼慕 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档