包括二叉排序樹的增加、遍歷和刪除
#include
#include
typedef int mytype;
/*二叉排序樹*/
typedef struct structtreebtree;
btree*
init()
;void
addchild
(btree* tree,int num)
;void
printtree
(btree* tree)
;btree*
inithead
(int headnode)
;btree*
deleteonenode
(btree* tree,mytype num)
;int main()
;for
(int i=
0;i<
9;i++
)printtree
(tree)
;deleteonenode
(tree,20)
;printf
("-------------先根遍歷---------------\n");
printtree
(tree)
;return0;
}/*初始化乙個節點*/
btree*
init()
/*初始化頭節點*/
btree*
inithead
(int headnode)
/*新增孩子節點*/
void
addchild
(btree* tree,int num)
t=t-
>leftnode;
continue;}
else
t=t-
>rightnode;
continue;}
}}/*先根遍歷*/
void
printtree
(btree* tree)
}/*刪除乙個節點*/
btree*
deleteonenode
(btree* tree,mytype num)
else
if(num > tree-
>node)
else
if(num < tree-
>node)
else
if(num==tree-
>node)
else
} tree-
>node=temp-
>node;
tree-
>leftnode=
deleteonenode
(tree-
>leftnode,temp-
>node);}
else
if(tree-
>rightnode==
null
&&tree-
>leftnode==
null
)else
if(tree-
>leftnode==
null
)else
if(tree-
>rightnode==
null
)return tree;
}}
二叉排序樹的實現
二叉排序樹是一顆特殊的二叉樹 對於樹上的任意乙個結點,根節點的值一定大於其左子樹上的任意結點的值,一定小於其右子樹上任意結點的數值。所以我們可以插入實現二叉排序樹,思路可以這樣 1 若當前樹為空,則x為根節點 2 如果樹不為空,比較根節點與之大小,若插入值小於根節點,就繼續比較跟節點的左子樹,即最終...
二叉排序樹的實現
二叉排序 搜尋 樹是以關鍵碼為結點的二叉樹,其性質 如果任一結點的左子樹非空,則左子樹的所有結點的關鍵碼都小於根結點的關鍵碼 如果任一結點的右子樹非空,則右子樹的所有結點的關鍵碼都大於根結點的關鍵碼。二叉排序樹的儲存結構如下,typedef struct binsortnode pbinsortno...
二叉排序樹的實現
查詢 偽 searchbst t,key 實現 bstree searchbst bstree t,int key 插入 偽 insertbst t,key else if key t key return else if key t key insert t rchild,key else ins...