// 樹的結構體
struct nodenode;
// 查詢二叉樹的一系列操作
// 查詢
node* findelement(node * root, int x)
else if(root->number > x)
else}
// 插入,注意形參裡面的引用
bool insertelement(node* &root, int x)
if(root->number == x)
else if(root->number > x)
else
}
對bst中序遍歷可以得到乙個有序陣列,由bst的性值可以看出。
// 分別為前序,中序,後序遍歷
如果要刪除根節點50 ,那麼其替代節點必需合適,能滿足bst的定義,可以用23號節點(左子樹最大的節點),54號節點(右子樹最小節點)。
//尋找最大值
node* findmax(node* root)
return root;
}//尋找最小值
node* findmin(node* root)
return root;
}// 刪除元素
void deleteelement(node* &root, int x)
// 節點左子樹存在,則找左子樹的最大值來替代
else if(root->lchild != null)
// 節點右子樹存在,則找右子樹的最小值來替代
else if(root->rchild != null)
} else if(root->number > x)
else
}
問題 a: 二叉排序樹
/* 查詢二叉樹的一系列基本操作 */
// 查詢
node* findelement(node * root, int x)
else if(root->number > x)
else}
// 插入,注意形參裡面的引用
bool insertelement(node* &root, int x)
if(root->number == x)
else if(root->number > x)
else}
// 前中後次序遍歷
void preorder(node* root)}
void inorder(node* root)}
void postorder(node* root)}
// 刪除結點, 要先引入兩個尋找結點前驅和後繼
node* findpre(node* root)
return now;}
node* findpost(node* root)
return now;}
void deleteelement(node* &root, int x)
else if(root->lchild != null)
else
}else if(root->number > x)
else}
int main()
preorder(root); // 前序
printf("\n");
inorder(root); // 中序
printf("\n");
postorder(root); // 後序
printf("\n");
}return 0;
}
1043 is it a binary search tree (25 分)
注意:其中對mbst遍歷的處理,如其中序遍歷為依次遍歷右子樹,根節點,左子樹。還有就是可以直接比較兩個vector是否相等。
#include#include#include#includeusing namespace std;
//記錄bst的前序,後序,映象bst的前序,後序
vectorpreorder, preorderm, origin, postorder, postorderm;
struct nodenode;
// 插入結點
bool insertelement(node* &root, int x)
else if(root->number > x)
else
}//bst和映象bst的前序,注意映象bst要交換左右子樹
void preorderbst(node* root)
}void preordermbst(node* root)
}//bst和映象bst和後序遍歷
void postorderbst(node* root)
};void postordermbst(node* root)
}int main()
//分別對bst和映象bst進行前序,後序遍歷
preorderbst(root);
preordermbst(root);
postorderbst(root);
postordermbst(root);
if(origin == preorder)
} else if(origin == preorderm)
} else
return 0;
}
演算法筆記9 4 二叉查詢樹 BST
search函式查詢二叉查詢樹中資料域為x的結點 插入乙個資料域為x的新結點 注意引數root要加引用 void insert node root,int x if x root data return 結點已經存在 不需要插入 二叉查詢樹元素一定不會重複 else if xdata insert ...
二叉查詢樹 BST
當所有的靜態查詢結構新增和刪除乙個資料的時候,整個結構都需要重建。這對於常常需要在查詢過程中動態改變資料而言,是災難性的。因此人們就必須去尋找高效的動態查詢結構,我們在這討論乙個非常常用的動態查詢樹 二叉查詢樹。二叉查詢樹的特點 下面的圖就是兩棵二叉查詢樹,我們可以總結一下他的特點 1 若它的左子樹...
二叉查詢樹(BST)
二叉查詢樹,也稱為二叉排序樹,二叉搜尋樹。二叉查詢樹結合了鍊錶插入的靈活性和有序陣列查詢 二分查詢 的高效性。用二叉查詢樹實現有序符號表的api。public class bst,value 有序符號表的相關方法 public intsize private intsize node x publi...