深入學習理解bst
#include using namespace std;
typedef struct bitnodebitnode,*bitree;
//二叉樹的插入操作
void insert(bitnode *&root,int x) //因為當對空樹插入時,相當於改變了樹的根節點的指向,因此需要用到指標或引用,引用比較方便,以免出現二級指標的操作,刪除亦然。
//二叉排序樹的建立
bitree createbst(int data,int n)
}//尋找以root為根節點的樹中最小權值節點
bitnode *findmin(bitree root)
//尋找以root為根節點的樹中最大權值節點
bitnode *findmax(bitree root)
//刪除節點的遞迴形式,只考慮2種情況:(1)無左右孩子(2)只有1個孩子
void deletenode(bitree &root,int x)
else if(root->left!=null) //左子樹不為空,找前驅
else if(root->right!=null) //右子樹不為空
可能更簡潔:
#include #include using namespace std;
struct treenode
};void insert(treenode *&root,int val)
treenode* createbst(int data,int n)
}treenode *findmin(treenode *root)
return root;
}treenode *findmax(treenode *root)
return root;
}void deletenode(treenode *&root,int val)
else if(root->left)
else if(root->right)
}else if(root->data>val)
else
}int main()
; treenode *root= createbst(a,8);
transverse(root);
cout<
deletenode(root,7);
deletenode(root,5);
transverse(root);
return 0;
}
二叉搜尋樹BST
在二叉搜尋樹b中查詢x的過程為 1.若b是空樹,則搜尋失敗,否則 2.若x等於b的根結點的資料域之值,則查詢成功 否則 3.若x小於b的根結點的資料域之值,則搜尋左子樹 否則 4.查詢右子樹 指標parent指向proot的父節點,其初始呼叫值為null 若查詢成功,指標ptarget指向目標節點,...
二叉搜尋樹(BST)
二叉搜尋樹 bst bst 或者是一棵空樹,或者對於任何乙個結點,設其值為k,則該結點的左子樹的值小於k,右結點的值大於k。二叉搜尋樹按照中根遍歷將各個結點列印,將得到按照大到小的順序排列。bsg示意圖 二叉搜尋樹的效率在於檢索,將演算法複雜度從2 k減少到log n 檢索方式 從根結點開始,如果等...
二叉搜尋樹 BST
也稱二叉查詢樹或二叉排序樹 非空二叉搜尋樹的性質 刪除 此操作相對其他操作更加複雜。可以分為三種情況 參考自浙大資料結構 include include include using namespace std typedef int elementtype 二叉搜尋樹 左子樹元素都比根元素小,右子樹...