zoukankan      html  css  js  c++  java
  • 【数据结构】二叉树

    代码内容包括:二叉树的遍历(先序、中序、后序) 二叉树的创建(先序) 以及二叉树深度和叶子数目的求法

    </details>
    
    #include <stdio.h>
    #include <stdlib.h>
    typedef char dataType;
    
    typedef struct node{
    
        dataType data;
        struct node *lchild,*rchild;
    
    }BinTree;
    /*---创建二叉树---*/
    BinTree *CreateBinTree()
    {/*先序建立一个二叉树链表*/
        BinTree *bt = NULL;
        char ch;
    
        ch = getchar();
    
        if(ch!='#')
        {
            bt = (BinTree *)malloc(sizeof(BinTree));
            bt->data = ch;
            bt->lchild = CreateBinTree();
            bt->rchild = CreateBinTree();
    
        }
        return bt;
    
    }
    void  endprintfBinTree(BinTree *bt)
    {
        if(bt != NULL)
        {/*---后序二叉树遍历---*/
    
            endprintfBinTree(bt->lchild);
            endprintfBinTree(bt->rchild);
            printf("%c",bt->data);
        }
    
    }
    void  firstprintfBinTree(BinTree *bt)
    {
        if(bt != NULL)
        {/*---先序二叉树遍历---*/
            printf("%c",bt->data);
            firstprintfBinTree(bt->lchild);
            firstprintfBinTree(bt->rchild);
        }
    
    }
    void  middelprintfBinTree(BinTree *bt)
    {
        if(bt != NULL)
        {/*---中序二叉树遍历---*/
    
            middelprintfBinTree(bt->lchild);
            printf("%c",bt->data);
            middelprintfBinTree(bt->rchild);
        }
    
    }
    
    
    /*---按中序遍历的方法求叶子节点的总数---*/
    void CountLeaf(BinTree *t,int* count)
    {
        if(t)
        {
            if(!(t->lchild)&&!(t->rchild))
            {
                (*count)++;
    
            }
             CountLeaf(t->lchild,count);
             CountLeaf(t->rchild,count);
    
        }
    
    }
    /*---求二叉树深度---*/
    int  Depth(BinTree *t)
    {
        int h1,hr;
        if(!t) return 0;
        else
        {
            h1 = Depth(t->lchild);
            hr = Depth(t->rchild);
            if(h1>=hr) return h1+1;
            else       return hr+1;
    
        }
    }
    
    int main()
    {
        BinTree *bt;
        int a = 0;
    
       bt =  CreateBinTree();
        firstprintfBinTree(bt);
        middelprintfBinTree(bt);
        endprintfBinTree(bt);
        CountLeaf(bt,&a);
        printf("%d",a);
    
        printf("
    %d",Depth(bt));
    
    
    
    
    }
    
    
    
  • 相关阅读:
    gulp-API介绍
    前端构建工具gulpjs的使用介绍及技巧(转载)
    atom插件之less-autocompile
    atom-安装插件
    gulp入门1
    edp 基于node.js和npm的前端开发平台
    (转)详解JavaScript模块化开发
    require.js
    thinkcmf5 iis+php重写配置
    thinkcmf5 模板版变量的加载过程 和 新增网站配置项怎么全局使用
  • 原文地址:https://www.cnblogs.com/zhujiaozhu/p/15490686.html
Copyright © 2011-2022 走看看