バイナリーツリーデータ構造のトラバース

書式#include <stdio.hに>

する#include <STDLIB.H>
のtypedef構造体ノード
{
        charデータ。
        ノード* Lchildをストラクト。
        ノード* Rchildをストラクト。
        構造体のノード*親。
} BiTNode、* BiTree。
BiTree CreateBiTree(){
    CHAR CH。
    BiTree T;
    scanf関数( "%のC"、&CH);
    (CH == '#')T = NULLであれば、
    他
    {
        T =(BiTree)はmalloc(はsizeof(BiTNode))。
        T->データ= CH;
        T-> Lchild = CreateBiTree()。
        T-> Rchild = CreateBiTree()。


    }
    Tを返す; //
}
//先序遍历二叉树
 空隙PreOrderTraverse(BiTree T)
 {
    IF(T)
    {
        のprintf( "%のC"、T->データ);
        PreOrderTraverse(T-> Lchild);
        PreOrderTraverse(T-> Rchild);
     }
 }
 前順で//バイナリツリー
 空隙InOrderTraverse(BiTree T)
 {
    IF(T)
    {
        InOrderTraverse(T-> Lchild);
        のprintf( "%のC"、T->データ);
        InOrderTraverse(T-> Rchild);
     }
  }
  //バイナリツリー横断後に
  ボイドPostOrderTraverseを(BiTree T)
  {
    IF(T)
    {
        PostOrderTraverse (T-> Lchild);
        PostOrderTraverse(T-> Rchild);
        のprintf( "%のC"、T->データ)。
      }
   }


INTメイン()
 {
    BiTree T;
    T = CreateBiTree();
    のprintf( "前順走査である:\ n");
    PreOrderTraverse(T);
    のprintf( "\ N-");
    のprintf(「トラバーサル配列である:\ nは");
    InOrderTraverse(T);
    のprintf(" \ N- ");
    のprintf("後順である:\ N- ");
    PostOrderTraverse(T)。


 }


ご注意ください 
 /*这里的输入要严格按照正确的顺序才能结束.这里要用到二叉树的一个性质,就是说对于有n个节点的二叉树,就有n+1个空域,在这里即为如果你输入了n个元素,那么一定要有n+1个#才会结束迭代过程.*/创建二叉树的时候 用的是先序遍历 要根据先序的特征来确定#的位置
公開された19元の記事 ウォンの賞賛8 ビュー4141

おすすめ

転載: blog.csdn.net/paohui001lqp/article/details/80321340