二叉排序樹(二叉搜尋樹,BST)的使用

2021-07-05 03:43:47 字數 857 閱讀 3615

/**

* 輸入一系列整數,建立二叉排序樹,

* 並進行前序、中序、後序遍歷。

* 不計入重複元素。

* 方法:注意二級指標的使用,

* 相當於引用一級指標,

* 被調函式能改變呼叫函式的變數。

*/#include #include #include typedef struct treenode treenode_t;

void bst_insert(treenode_t ** pp, int keyval) else if (keyval < (*pp)->dat) else if (keyval > (*pp)->dat)

}void visit(treenode_t * p)

void preorder(treenode_t * p, void (* pvis)(treenode_t *))

void inorder(treenode_t * p, void (* pvis)(treenode_t *))

void postorder(treenode_t * p, void (* pvis)(treenode_t *))

void bst_destroy(treenode_t ** pp)

}void main()

preorder(ptree, visit);

putchar('\n');

inorder(ptree, visit);

putchar('\n');

postorder(ptree, visit);

putchar('\n');

bst_destroy(&ptree);

}}

二叉搜尋樹(二叉排序樹)BST

定義 每個節點至多有兩個孩子結點,且子樹有左右序之分,左子樹的鍵值永遠比右子樹小,並且小於根鍵值,且沒有鍵值相等的結點。操作 插入 查詢操作注意左右鍵值大小這一特點。刪除操作是重點,若沒有子結點或只有乙個子結點很好處理,若有兩個子結點,刪除父結點誰來繼位?找到左子樹中鍵值最大的點!用它來代替被刪除結...

二叉排序樹BST

二叉排序樹 binary sort tree 又稱二叉查詢樹 binary search tree 亦稱二叉搜尋樹。二叉排序樹的性質 左子樹上所有結點的值均小於或等於它的根結點的值 右子樹上所有結點的值均大於或等於它的根結點的值 左 右子樹也分別為二叉排序樹 如圖是乙個bst。有了這種性質,bst的...

二叉排序樹 BST

二叉排序樹,又叫二叉查詢樹,它或者是一棵空樹 或者是具有以下性質的二叉樹 1.若它的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 2.若它的右子樹不空,則右子樹上所有節點的值均大於它的根節點的值 3.它的左右子樹也分別為二叉排序樹。1.1 排序二叉樹之插入操作 已知乙個關鍵字值為key的結...