1. 程式人生 > >【模板】二叉搜尋樹(二叉排序樹,二叉查詢樹,BST)

【模板】二叉搜尋樹(二叉排序樹,二叉查詢樹,BST)

二叉搜尋樹其實就是滿足左結點小於根,右結點大於根這類規則的樹形結構。 

 1 int n;
 2 int a[MAX_N];
 3 int lt[MAX_N], rt[MAX_N];
 4 // 沒有則為-1
 5 // 預設a[0]為根結點
 6  
 7 void Insert(int x, int obj) // 插入結點a[obj] 
 8 { 
 9     if(a[obj] < a[x])
10     {
11         if(lt[x] ^ -1) Insert(lt[x], obj);
12         else lt[x] = obj;
13     }
14 else 15 { 16 if(rt[x] ^ -1) Insert(rt[x], obj); 17 else rt[x] = obj; 18 } 19 return; 20 } 21 22 int Find(int x, int obj) // 尋找obj這個值在樹中的位置 23 { 24 if(obj < a[x]) 25 { 26 if(lt[x] ^ -1) return Find(lt[x], obj); 27 else return -1; // Not found
28 } 29 if(obj > a[x]) 30 { 31 if(rt[x] ^ -1) return Find(rt[x], obj); 32 else return -1; // Not found 33 } 34 return x; 35 }