zoukankan      html  css  js  c++  java
  • 二叉树的建立与递归遍历C语言版

    </pre><pre name="code" class="cpp">#include <stdio.h>
    #include <malloc.h>
    
    
    typedef struct BTNode
    {
    char data;
    struct BTNode *lchild;
    struct BTNode *rchild;
    }BTNode;
    
    
    void createTree(BTNode* *T)
    {
    char ch = getchar();
    if(ch=='#') 
    {
    *T=NULL;
    return;
    }
    (*T) = (BTNode*)malloc(sizeof(BTNode));
    (*T)->data = ch;
    createTree(&(*T)->lchild);
    createTree(&(*T)->rchild);
    }
     
    void preOrder(BTNode *T)//先序遍历
    {
    if(T==NULL) return;
    printf("%c	", T->data);
    if(T->lchild!=NULL)
    preOrder(T->lchild);
    if(T->rchild != NULL)
    preOrder(T->rchild);
    }
    
    
    void inOrder(BTNode *T)//中序遍历
    {
    if(T==NULL) return;
    
    if(T->lchild!=NULL)
    inOrder(T->lchild);
    printf("%c	", T->data);
    if(T->rchild != NULL)
    inOrder(T->rchild);
    }
    
    
    void postOrder(BTNode *T)//后序遍历
    {
    if(T==NULL) return;
    
    if(T->lchild!=NULL)
    postOrder(T->lchild);
    if(T->rchild != NULL)
    postOrder(T->rchild);
    printf("%c	", T->data);
    }
    
    
    int main(int argc, char const *argv[])
    {
    BTNode *T;
    createTree(&T);
    puts("PreOrder visit:");
    preOrder(T);
    putchar('
    ');
    
    
    puts("inOrder visit:");
    inOrder(T);
    putchar('
    ');
    
    
    puts("PostOrder visit:");
    postOrder(T);
    putchar('
    ');
    return 0;
    }
    /*运行结果:
    
    
    ABD###C##
    PreOrder visit:
    A       B       D       C
    inOrder visit:
    D       B       A       C
    PostOrder visit:
    D       B       C       A
    请按任意键继续. . .*/
    


  • 相关阅读:
    pandas DataFrame
    pandas Series
    numpy nan和inf
    Filder配置及使用教程
    Vmware Ubuntu18.04更换清华源
    numpy 其它常用方法
    numpy 数组的拼接
    numpy 数值的修改
    numpy 索引和切片
    class 绑定的数据对象不必内联定义在模板里
  • 原文地址:https://www.cnblogs.com/yldf/p/6249885.html
Copyright © 2011-2022 走看看