バイナリソートツリーデータ構造との動作(BSTは、順序の最初の要素、挿入、検索、削除に必要)

  1の#include <stdio.hの>
   2の#include <STDLIB.H>
   3。 
  4。 // バイナリソートツリーデータ構造
  5。のtypedef ストラクトBSTを
   6。 {
   7。     INTデータ;                     // データ部
  8      構造体のBST lchild *、* rchild; / / 子供の周りに
  9。 } BST、* BSTree;
 10  
。11  // 要素の最初のシーケンスを見つける
12は BSTree first_of_mideum(BSTree BST)
 13である {
 14      ながら(BST-> lchild)
 15          BST = BST-> lchild。
16      リターンBST;
 17  }
 18は 、// 新しい要素を挿入する
。19  BOOL INSERT(BST BSTreeと、int型E)
 20である {
 21は、     IF(BST == NULL)
 22は     、{
 23は          BSTree btemp =(BST *)はmallocはsizeof (BST))。
 24          btemp->データ= E;
 25          btemp-> lchild = NULL;
 26である          btemp-> rchild = NULL;
 27          BST = btemp;
 28      }
 29      IF(bst->データ== E)
 30          リターン はfalse ;
31      であれば(bst->データ< E)
 32      {
 33          リターンインサート(bst-> lchild、E)。
34      }
 35      他の
36      {
 37          リターンインサート(bst-> rchild、E)。
38      }
 39  }
 40  // 创建函数
41 BSTree createBST(INT要素[]、INT n)を
 42  {
 43      BSTree BST = NULL;
44     int型私は= 0を45      一方(I < N)
 46          インサート(BST、要素[I ++ ])。
47      リターンBST;
48  }
 49  // 查找函数
50  ブール検索(BSTreeのBST、INT E)
 51  {
 52      であれば(BST == NULL)
 53          リターン 54      もし(bst->データ== E)
 55          リターン 56      他に あれば(bst->データ< E)
57          リターン検索(bst-> lchild、E)。
58      他に
59          のリターン検索(bst-> rchild、E)。
60  }
 61  // 删除函数
62  BOOLデル(BSTree&BST、int型E)
 63  {
 64      であれば(BST == NULL)
 65          リターン 66      であれば(bst->データ== E)
 67      {
 68          であれば(bst-> lchild == NULL && bst-> rchild == NULL)
 69          {
 70             BSTree btemp = BST;
71              BST = NULL;
72              フリー(btemp)。
73は             返す 74          }
 75          そう であれば(bst-> lchild == NULL)
 76          {
 77              BSTree btemp = BST。
78              BST = bst-> rchild。
79              無料(btemp)。
80は             返す 81          }
 82          そう であれば(bst-> rchild == NULL)
 83         {
 84              BSTree btemp = BST。
85              BST = bst-> lchild。
86              無料(btemp)。
87は             返す 88          }
 89          他の
90          {
 91              BSTree btemp = first_of_mideum(BST)。
92              BSTree btemp2 = BST。
93              BST = btemp。
94              無料(btemp2)。
95              デル(btemp、btemp-> データ)。
96          }
 97      }
98      他の 場合(bst->データ< E)
 99          リターン・デル(bst-> lchild、E)。
100      
101          リターン・デル(bst-> rchild、E)。
102  }
 103  INT メイン()
 104  {
 105      BSTree BST = NULL;
106      int型 A [] = { 12345 }。
107      BST = createBST(5 )。
108      のprintf(" %のDは、%D、%のDは、%D、%D \ n "、検索(BST、1)、検索(BST、2)、検索(BST、3)、検索(BST、4)、検索(BST、5 ))。
109      のprintf(" %d個、%D \ n "、デル(BST、4)、デル(BST、8 ))。
110      のprintf(" %のDは、%D、%のDは、%D、%D \ n "、(BST、検索1)、(BST、検索2)、(BST、検索3)、(BST、検索4)、検索(BST、5 ));
111      戻り 0 ;
112 }

 

おすすめ

転載: www.cnblogs.com/sqdtss/p/12574428.html