二叉搜索數的應用

(一)二叉搜索樹的查找操做Find函數

 1 Position Find(ElementType x,BinTree BST)
 2 {
 3   if(!BST) return NULL;
 4   if(x>BST->Data)
 5     return Find(x,BST->Rigeht);
 6   else if(x<BST->Data)
 7     return Find(x,BST->left);
 8   else
 9     return BST;
10 }

因爲非遞歸函數的執行效率高,可將「尾遞歸」函數改成迭代函數spa

 1 Position ITerFind(ElementType x,BinTree BST)
 2 {
 3   while(BST)
 4   { 
 5      if(x>BST->Data)
 6         BST=BST->Right;
 7      else if(x<BST->Data)
 8         BST=BST->Left;
 9      else
10         return BST;
11    }
12    return NULL;
13 }

查找的效率決定於樹的高度。
(二)查找最大和最小元素code

  • 最大元素必定是在樹的最右分枝的端結點上;
  • 最小元素必定是在樹的最左分枝的端結點上。

查找最小元素的遞歸函數:blog

1 Position FindMin(BinTree BST)
2 {
3   if(!BST)return NULL;
4   else if(!BST->Left)
5     return BST;
6   else
7     return FindMin(BST->Left);
8 }

查找最大元素的迭代函數:遞歸

1 Position FindMax(BinTree BST)
2 {
3    if(BST)
4      while(BST->Right)  BST=BST->Right;
5    return BST;
6 }
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息