二叉排序樹的實現

2021-10-07 21:51:14 字數 1724 閱讀 7785

包括二叉排序樹的增加、遍歷和刪除

#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...