する#include <stdio.hに> する#include <STDLIB.H> のtypedef 構造体BiTNode { チャーデータ。 構造体 BiTNode * lchild、* rchild。 } BiTNode、 * BiTree。 INT INIT(BiTree&T)// 存在的意义并不大 { T = NULL; リターン 1 ; } INT BiTreedestroy(BiTree&T) { 場合(T) { 場合(T-> lchild) BiTreedestroy(T - > lchild)。 もし(T-> rchild) BiTreedestroy(T - > rchild)。 無料(T); トン = NULL; } リターン 1 。 } ボイド BiTreecreate(BiTree&T) { チャーCH。 チャー PCH [] = " ABD $$ EHJ $$ KL $$ M $ N $$$ CF $$ G $ I $$ " 。 静的 int型私= 0 ; CH = PCH [I ++ ]; もし(CH == ' $ ' ) 、T = NULL; 他 { T =(BiTree)はmalloc(sizeof (BiTNode))。 もし(!トン)の出口( - 1 ); トン - >データ=のCH; BiTreecreate(T - > lchild)。 BiTreecreate(T - > rchild)。 } } ボイドpre_order_traveral(BiTree T) { 場合(T) { のprintf(" %C "、T-> データ)。 pre_order_traveral(T - > lchild)。 pre_order_traveral(T - > rchild)。 } } int型フラグ= 1 。 ボイドpre_order_traveral_brackets1(BiTree T) { // A(B(D、E(H(J、K(L、M(N)))))、C(F.、G(I))) IF (T) { のprintf(" %のC "、T-> データ); IF(T-> || T-lchild> rchild) { のprintf(" (");フラグに++ ; } pre_order_traveral_brackets1(T - > lchild); IF(T- > rchild) // IF(T-> T-lchild ||> rchild)が、これは、(持つことであるかを決定するために使用される)状況 // 出力は、ディスプレイ要件「サブツリー右サブツリーを残さなかった」には当てはまりません、それはありませんが、この文を使用して、より合理的です printf(" " ); pre_order_traveral_brackets1(T - > rchild)。 } } ボイドpre_order_traveral_brackets(BiTreeさt) { // A(B(D、E(H(J、K(L、M(N)))))、C(F、G(I)))であれば( T) { のprintf(" %C "、T-> データ)。 // IF(T-> lchild || T-> rchild) のprintf(" (" ); pre_order_traveral_brackets1(T - > lchild); 一方、( - フラグ) { printf(" )" ); } // IF(T-> lchild) のprintf(" " )。 pre_order_traveral_brackets1(T - > rchild)。 一方、(フラグ- + 1 ) { のprintf(" )" )。 } } } int型(最大整数、int型B) { 戻り > bは?A:B; } INT BiTreedeep(BiTree T) { もし(T == NULL) の戻り 0 ; 他 { 場合(T-> lchild == NULL && T-> rchild == NULL) リターン 1 。 他の リターン 1つの + MAX(BiTreedeep(T-> lchild)、BiTreedeep(T-> rchild)); } } int型{)(主 BiTree binarytree。 もし(INIT(binarytree)) のprintf(" 创建二叉树成功\ nは!" ); BiTreecreate(binarytree)。 printf(" 输出二叉树:" ); pre_order_traveral_brackets(binarytree)。 printf("\バイナリツリーBTのn個の高さ:%dは\ nを"BiTreedeep(BinaryTree)); IF (BiTreedestroy(BinaryTree)) のprintf(" バイナリ成功をリリース!" ); }