二叉搜索数的应用
(一)二叉搜索树的查找操作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 }
由于非递归函数的执行效率高,可将“尾递归”函数改为迭代函数
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 }
查找的效率决定于树的高度。
(二)查找最大和最小元素
- 最大元素一定是在树的最右分枝的端结点上;
- 最小元素一定是在树的最左分枝的端结点上。
查找最小元素的递归函数:
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 }