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 [] = { 1、2、3、4、5 }。 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 }