zoukankan      html  css  js  c++  java
  • 二叉树先序 中序 后序遍历

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    int index=1;
    typedef char String[24];
    String str;
    
    /*=============用于构造二叉树(存储的数据)===============*/
    void StrAssign(String str,char *chars){
        int i;
        for(i=1;i<=strlen(chars);i++)
            str[i]=*(chars+i-1);    
    } 
    
    /*==============创建二叉树结构============================*/
    typedef struct BiTNode{
        char data;
        struct BiTNode *lchild,*rchild; 
    }BiTNode,*BiTree; 
    
    /*================按照前序输入二叉树中节点的值==================*/ 
    void CreateBiTree(BiTree *T){
        char ch;
        ch=str[index++]; 
        if(ch=='#')
            *T=NULL;
        else{
            *T=(BiTree)malloc(sizeof(BiTNode));
            (*T)->data=ch;
            CreateBiTree(&(*T)->lchild);
            CreateBiTree(&(*T)->rchild);
        }
    } 
    /*=============返回T的深度===========*/
    int BiTreeDepth(BiTree T){
        int i,j;
        if(!T)
            return 0;
        if(T->lchild)
            i=BiTreeDepth(T->lchild);
        else 
            i=0;
        if(T->rchild)
            j=BiTreeDepth(T->rchild);
        else
            j=0;
        return i>j?i+1:j+1;
    } 
    /*==============先序遍历二叉树========*/
    void PreOederTraverse(BiTree T){
        if(T==NULL)
            return;
        printf("%c",T->data);
        PreOederTraverse(T->lchild);
        PreOederTraverse(T->rchild);
    } 
    /*=============中序遍历二叉树==============*/
    void InOrderTraverse(BiTree T){
        if(T==NULL)
            return;
        InOrderTraverse(T->lchild);
        printf("%c",T->data);
        InOrderTraverse(T->rchild);
    }
    /*=============后序遍历二叉树==============*/
    void PostOrderTraverse(BiTree T){
        if(T==NULL)
            return;
        PostOrderTraverse(T->lchild);
        PostOrderTraverse(T->rchild);
        printf("%c",T->data);
    }
    int main(){
        BiTree T;
        StrAssign(str,"ABDH#K###E##CFI###G#J##"); 
        CreateBiTree(&T);
        printf("先序遍历
    ");
        PreOederTraverse(T);
        printf("
    中序遍历
    ");
        InOrderTraverse(T);
        printf("
    后序遍历
    ");
        PostOrderTraverse(T);
        printf("
    二叉树深度%d
    ",BiTreeDepth(T));
        return 0;
    }
    View Code

  • 相关阅读:
    让mysql查询强制走索引
    【转】起始时间和终止时间,循环输出每天
    【转】31个实用的find命令
    Hive数据倾斜解决办法总结
    网站架构之可扩展性
    网站架构之高可用性
    网站架构之可伸缩性
    kafka中的消费组
    MySQL知识点小结
    [数据挖掘]用户画像
  • 原文地址:https://www.cnblogs.com/sky-z/p/4644476.html
Copyright © 2011-2022 走看看