BST二叉搜尋樹

2021-09-10 07:12:40 字數 1535 閱讀 2794

深入學習理解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 二叉搜尋樹 左子樹元素都比根元素小,右子樹...