zoukankan      html  css  js  c++  java
  • 数据结构-二叉树的递归实现

    二叉树的递归创建,三种遍历:

    #include <stdio.h>
    #include <stdlib.h>
    
    #define ERROE 0
    typedef char ElementType;
    
    typedef struct BinTree {
        ElementType data;
        struct Bintree* lchild, * rchild;
    }BinTree,*Tree;
    
    //按照前序遍历输入二叉树结点值,#表示空结点
    void CreatBinTree(Tree* T)
    {
        ElementType data;
        scanf_s("%c", &data);
        if (data == '#')
            *(T) = NULL;
        else
        {
            *T = (Tree)malloc(sizeof(BinTree));
            if (*T == NULL)
                exit(ERROE);
            else
            {
                (*T)->data = data;
                CreatBinTree(&((*T)->lchild));
                CreatBinTree(&((*T)->rchild));
            }
        }
    }
    
    void PreOrderTraverse(Tree T, int level)
    {
        if (T)
        {
            printf_s("%c in level %d
    ", T->data, level + 1);
            PreOrderTraverse(T->lchild, level + 1);
            PreOrderTraverse(T->rchild, level + 1);
        }
    }
    
    void InOrderTraverse(Tree T, int level)
    {
        if (T)
        {
            PreOrderTraverse(T->lchild, level + 1);
            printf_s("%c in level %d
    ", T->data, level + 1);
            PreOrderTraverse(T->rchild, level + 1);
        }
    }
    
    void PostOrderTraverse(Tree T, int level)
    {
        if (T)
        {
            PreOrderTraverse(T->lchild, level + 1);
            PreOrderTraverse(T->rchild, level + 1);
            printf_s("%c in level %d
    ", T->data, level + 1);
        }
    }
    
    int main()
    {
        Tree T;
        printf_s("Creat Binary Tree
    ");
        CreatBinTree(&T);
        printf_s("Pre
    ");
        PreOrderTraverse(T, 0);
        printf_s("In
    ");
        InOrderTraverse(T, 0);
        printf_s("Post
    ");
        PostOrderTraverse(T, 0);
    
        system("pause");
        return 1;
    }

  • 相关阅读:
    JDBC连接
    Ubuntu 16.04安装MySQL(5.7.18)
    AOP拦截日志报错llegalStateException: It is illegal to call this method if the current request is not in asynchronous mode
    mybatis笔记
    打扮IDEA更换主题
    简单的IDEA破解到2099年
    UML之时序图详解
    UML之类图详解
    UML之用例图详解
    spring和springboot常用注解总结
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12386096.html
Copyright © 2011-2022 走看看