C言語のテストコード、バイナリツリー検索

  1の#include <stdio.hの>
   2の#include <STDLIB.H>
   3の#include <stdbool.h>
   4  
  5のtypedef int型DATA。
  6のtypedef 構造体_SNode_
   7  {
   8つの     DATAデータ。
  9      構造体 _SNode_ * p_Right、* p_Left。
10  } Sノード。
11  
12 Sノード* CreateTree(CONST データD)
 13  {
 14      Sノード* m_root =(Sノード*)はmallocはsizeof (Sノード))。
15      m_root->データ= D。
16      m_root-> p_Left = m_root-> p_Right = NULL;
17      リターンm_root。
18  }
 19  
20  空隙 InsertRight(Sノード* P、CONST データD)
 21  {
 22      Sノード* PNEW = CreateTree(D)。
23      P-> p_Right = PNEW。
24  }
 25  
26  空隙 InsertLeft(Sノード* P、CONST データD)
 27  {
 28      Sノード* PNEW = CreateTree(D)。
29      P-> p_Left = PNEW。
30  }
 31 
32  ボイドプレオーダー(Sノード* P)
 33  {
 34      のprintf(" %d個"、P-> データ)。
35      であれば(P-> p_Left)
 36          プレオーダー(P-> p_Left)。
37      であれば(P-> p_Right)
 38          プレオーダー(P-> p_Right)。
39  }
 40  
41  空隙順序どおり(Sノード* P)
 42  {
 43      であれば(P-> p_Left)
 44          順序どおり(P-> p_Left)。
45      のprintf(" %のD "、P-> データ)。
46      であれば(P-> p_Right)
 47          順序どおり(P-> p_Right)。
48  }
 49  
50  空隙後順(Sノード* P)
 51  {
 52      であれば(P-> p_Left)
 53          後順(P-> p_Left)。
54      であれば(P-> p_Right)
 55          後順(P-> p_Right)。
56      のprintf(" %d個"、P-> データ)。
57  }
 58  
59 BOOLルックアップ(SNODE P *、CONST DATA D)
 60  {
 61は     、一方(P)
 62は     、{
 63は         IF(P->データ== D)
 64              リターン trueに65           IF(P->データ> D)
 66              P = P - > P_left;
 67          他の
68              P = P - > P_right;
 69      }
 70      リターン falseに71である }
 72  
73です // 第二の方法:二つのポインタ使用して
74  ボイド関連項目SetAt(SNODE P *、CONST DATA D)// バイナリ検索を作成
75  {
 76      IF(P == NULL)
 77      {
 78          P = CreateTree(D);
 79          リターン;
 80      }
 81      SNODE **&ppRoot = P;
 82      一方、(* ppRoot)
 83      {
 84          IF((* ppRoot) - >データ< D)
 85              ppRoot =&(* ppRoot) - > P_right;
 86           IF((* ppRoot) - >データ> D)
 87             ppRoot =&(* ppRoot) - > p_Left。
88      }
 89      極悪* PNEW = ツリー(d)を作成します。
90      * ppRoot = PNEW。
91  }
 92  
93  INT )(主
 94  {
 95      極悪* PROOT =ツリーを作成する(30 )。
96      関連項目SetAt(PROOT、75 )。
97      関連項目SetAt(PROOT、20 )。
98      関連項目SetAt(PROOT、40 )。
99      関連項目SetAt(PROOT、10 )。
100      関連項目SetAt(PROOT、60 )。
101      関連項目SetAt(PROOT、50 );
 102  
103      IF(ルックアップ(PROOT、52である))
 104          のprintf(" 見出さ\ N-!" );
 105      そう
106          のprintf(" 見つかりません\ N-!" );
 107  
108      順序どおり(PROOTを);
 109  
110      戻り 0 ;
 111 }

 

おすすめ

転載: www.cnblogs.com/veis/p/12579390.html