章12 - 二分探索木

トラバーサル二分探索木、検索、挿入、削除などのpythonを達成するために

  1  クラスのTreeNode():
   2      DEF  __init__(自己、キー、P =なし、左=なし、右= なし):
   3          self.key = キー
   4          self.p = P
   5          self.left =   6          self.right =   7  
  8  クラスBinarySearchTree():
   9      #1 中序遍历
10      DEF inorderWalk(自己、X):
 11          であれば、X =!なし:
 12              self.inorderWalk(x.left)
 13              プリント(x.key、端= "  "14              self.inorderWalk(x.right)
 15      查找给定节点
16      DEF treeSearh(自己、X、K):
 17          であれば、X ==なし又は x.key == K:
 18              リターンX
 19          であれば K < X。キー:
 20              リターンself.treeSearh(x.left、k)は
 21          、他返すself.treeSearh(x.right、k)は
 22      最小关键元素
23      デフtreeMinimum(自己、X):
 24          しばらく x.left =!なし:
 25              X = x.left
26は         リターンX
 27      最大のキー要素
28      DEF treeMaximum(セルフ、X):
 29          ながら X.rightは!= なし:
 30              X = x.right
 31がなく         返すX
 32      後続ノード
33は、     DEF treeSuccessor(セルフ、X):
 34である         IF!= x.right なし:
 35              戻りself.treeMinimum(x.right)
 36          Y = XP
 37          ながら Y 及び Xは== y.right:
 38であり              、X = Y
 39             Y = YP
 40          リターンY
 41      前驱节点
42      DEF treePredecessor(自己、X):
 43          なら x.left =!なし:
 44              戻りself.treeMaximum(x.left)
 45          、Y = XP
 46          ながら、 Y 及び X == Y .LEFT:
 47              、X = Y
 48              、Y = YP
 49          戻りY
 50      DEF treeInsert(自己、T、Z):
 51          、Y = なし
 52          X =T
 53          ながらX:
 54              、Y = X
 55              であれば z.key < x.key:
 56                  、X = x.left
 57              さもなければ:X = x.right
 58          ZP = Y
 59          であれば Y == なし:
 60              T = Z
 61          のelif z.key < y.key:
 62              y.left = Z
 63          さもなければ:y.right = Z
 64      移动子树
65      デフ移植(自己、T、U、V):
 66         もしアップ== なし:
 67              T = V
 68          のelif uは== upleft:
 69              upleft = V
 70          、他71              直立= V
 72          の場合:V
 73              VP = アップ
 74      删除给定节点
75      デフtreeDelete(自己、T、 Z):
 76          なら z.left == なし:
 77              self.transPlant(T、Z、z.right)
 78          ELIFの z.right == なし:
 79             self.transPlant(T、Z、z.left)
 80          81              、Y = self.treeMinimum(z.right)
 82              なら YP =!Z:
 83                  self.transPlant(T、Y、y.right)が
 84                  y.right = z.right
 85                  y.right.p = Y
 86              self.transPlant(T、Z、Y)
 87              y.left = z.left
 88              y.left.p = Y
 89  
90  なら __name__ == " __main__ " 91     ノード1 =ツリーノード(15 92      NODE2 =ツリーノード(6 93      ノード3 =ツリーノード(18 94      ノード4 =ツリーノード(3 95      NODE5 =ツリーノード(7 96      node6 =ツリーノード(17 97      node7 =ツリーノード(20 98      node8 =ツリーノード(2 99      node9 =ツリーノード(4 100      NODE10 =ツリーノード(13 101      NODE11 =ツリーノード(9 102      bstree = BinarySearchTree()
 103      bstree.treeInsert(ノード1、ノード2)
 104     bstree.treeInsert(ノード1、ノード3)
 105      bstree.treeInsert(ノード1、ノード4)
 106      bstree.treeInsert(ノード1、NODE5)
 107      bstree.treeInsert(ノード1、node6)
 108      bstree.treeInsert(ノード1、node7)
 109      bstree.treeInsert(ノード1 、node8)
 110      bstree.treeInsert(ノード1、node9)
 111      bstree.treeInsert(ノード1、NODE10)
 112      bstree.treeInsert(ノード1、NODE11)
 113      bstree.inorderWalk(ノード1)
 114      ノード= bstree.treeSearh(node1,7 115      印刷"" 116      印刷(node.key、node.p.key、node.right.key)
 117      min_node = bstree.treeMinimum(ノード1)
 118      max_node = bstree.treeMaximum(ノード1)
 119      プリント(min_node.key、max_node.key)
 120      su_node1 = bstree .treeSuccessor(ノード1)
 121      プリント(su_node1.key)
 122      su_node2 = bstree.treeSuccessor(NODE10)
 123      プリント(su_node2.key)
 124      su_node3 = bstree.treePredecessor(NODE11)
 125      プリント(su_node3.key)
 126      su_node4 = bstree.treePredecessor (ノード2)
 127      印刷(su_node4.key)
 128      、Z =ツリーノード(8 129      bstree.treeInsert(ノード1、Z)
 130      bstree.inorderWalk(ノード1)
 131      bstree.treeDelete(ノード1、ノード2)
 132      プリント"" 133      bstree.inorderWalk(ノード1)

 

おすすめ

転載: www.cnblogs.com/ldadaqiong/p/11070178.html