/**
* 輸入一系列整數,建立二叉排序樹,
* 並進行前序、中序、後序遍歷。
* 不計入重複元素。
* 方法:注意二級指標的使用,
* 相當於引用一級指標,
* 被調函式能改變呼叫函式的變數。
*/#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的結...