• 二叉树的遍历!


    /*
     二叉树的遍历,前序遍历,中序遍历,后序遍历。
    */

    #include<stdio.h>
    #include<stdlib.h>
    #define null 0
    //定义结构体
    struct BinaryTree
    {
     char data;
     struct BinaryTree *Lchild;
     struct BinaryTree *Rchild;
    };
    typedef struct BinaryTree BiTree;

    //建立二叉树
    BiTree * createBiTree(BiTree *, int);
    //前序遍历
    void PreOrder(BiTree *);
    //中序遍历
    void MidOrder(BiTree *);
    //后序遍历
    void PostOrder(BiTree *);
    //输出函数
    void Visit(BiTree *);

    int main()
    {
     BiTree bt, *root;
     printf("printf code: "); /*输入格式为:先输入根节点,再输入
            左子树,右子树,没有则用@代替。*/
     root = createBiTree(&bt, 0);
     printf("前序遍历的结果是:");
     PreOrder(root);
     printf(" ");
     printf("中序遍历的结果是:");
     MidOrder(root);
     printf(" ");
     printf("后序遍历的结果是:");
     PostOrder(root);
     printf(" ");
     return 0;
    }

    BiTree * createBiTree(BiTree *s, int k)
    {
     char c;
     BiTree *p, *t;
     scanf("%c", &c);
     if(c != '@')
     {
      p = (BiTree *)malloc(sizeof(BiTree));
      p -> data = c;
      p -> Lchild = null;
      p -> Rchild = null;
      if(k == 0)  t = p;
      if(k == 1)  s -> Lchild = p; /*链接到左子树*/
      if(k == 2)  s -> Rchild = p; /*链接到右子树*/
      createBiTree(p, 1);
      createBiTree(p, 2);
     }
     return t;
    }

    void PreOrder(BiTree *s)
    {
     if(s)
     {
      Visit(s -> data);
      PreOrder(s -> Lchild);
      PreOrder(s -> Rchild);
     }
    }

    void MidOrder(BiTree *s)
    {
     if(s)
     {
      MidOrder(s -> Lchild);
      Visit(s -> data);
      MidOrder(s -> Rchild);
     }
    }

    void PostOrder(BiTree *s)
    {
     if(s)
     {
      PostOrder(s -> Lchild);
      PostOrder(s -> Rchild);
      Visit(s -> data);
     }
    }

    void Visit(char e)
    {
     printf("%c", e);
    }

  • 相关阅读:
    【转】PowerManager 与 WakeLock
    【转】设计模式总结之模式分类
    【转】一篇文章,教你学会Git
    【转】Iconfont
    【转】码云source tree 提交超过100m 为什么大文件推不上去
    各 Android 平台版本支持的 API 级别
    【转】Android进程机制
    【转】数据库CRUD操作
    【转】数据库--视图的基本概念以及作用
    动态规划的两种形式
  • 原文地址:https://www.cnblogs.com/wdc123/p/3397247.html
Copyright © 2020-2023  润新知