二叉排序樹的建立(結點的插入,刪除等操作)

2021-06-21 22:25:45 字數 1934 閱讀 3467

二叉排序樹的理論看課本

**如下:

bstree.h

struct bstreenode;

typedef struct bstreenode *ptrtreenode;

void makeempty(ptrtreenode t);

ptrtreenode insertbstree(int x,ptrtreenode t); //二叉樹的插入操作

ptrtreenode findmin(ptrtreenode t);//查詢以t為頭結點的子樹中最小的關鍵字的結點,並返回--------------------遞迴方式實現

ptrtreenode findmin1(ptrtreenode t);//查詢以t為頭結點的子樹中最小的關鍵字的結點,並返回--------------------非遞迴方式實現

ptrtreenode deletebstree(int x,ptrtreenode t); //刪除關鍵字為x的結點(遞迴策略)

void printbstree_pre(ptrtreenode t);//先序遍歷

void printbstree_post(ptrtreenode t);//後序遍歷

void printbstree_in(ptrtreenode t);//中序遍歷

bstree.c

//name :jae chia

//purpose:建立二叉查詢樹,並進行二叉查詢樹的結點的刪除,搜尋帶有某個關鍵字的結點等

#include#include#include"bstree.h"

struct bstreenode

;/*ptrtreenode createbstree() //利用這個函式建立的是帶有啞元結點的二叉查詢樹,並不合適

*/void makeempty(ptrtreenode t)

}ptrtreenode insertbstree(int x,ptrtreenode t) //二叉樹的插入操作

t->element=x;

t->left=null;

t->right=null;

} else

return t;

}ptrtreenode findmin(ptrtreenode t)//查詢以t為頭結點的子樹中最小的關鍵字的結點,並返回--------------------遞迴方式實現

else

}ptrtreenode findmin1(ptrtreenode t)//查詢以t為頭結點的子樹中最小的關鍵字的結點,並返回--------------------非遞迴方式實現

return t;

}ptrtreenode deletebstree(int x,ptrtreenode t) //這裡也是採用的遞迴策略

else if(x < t->element) //在左分支上查詢關鍵字x,如此遞迴

else if(x > t->element) //在右分支上查詢關鍵字x,如此遞迴

else //找到該關鍵字

else //所刪除的關鍵字的結點的左右子樹僅存在乙個

else if(t->right==null)

free(tmpcell);

} }return t;

}//先序遞迴遍歷

void printbstree_pre(ptrtreenode t)

}//後序遞迴遍歷

void printbstree_post(ptrtreenode t)

}//中序遞迴遍歷

void printbstree_in(ptrtreenode t)

}int main(void)

執行結果:

二叉排序樹的建立,刪除

最近在複習資料結構,對於二叉排序樹,看了一些書,參考別人的思想寫出了這個 希望看到的人給點修改建議 如下 include include typedef struct bitree bitree typedef struct bitree ibitree ibitree q int searchtr...

二叉查詢樹(二叉排序樹)建立,插入,刪除操作。

尋找節點就是直接依據數值的大小。從root節點開始遍歷,大於當前遍歷節點就向它的右子樹查詢,相反則查詢它的左子樹。然後返回。直接依據root節點,遍歷到最右就是最大節點,遍歷到最左,就是最小節點。插入節點我這裡插入的節點都會成為葉子節點。依據大小的關係向下遍歷,遍歷到最後的節點,然後插入就能夠了。這...

二叉排序樹的插入和刪除

遞迴的尋找插入的位置。public static treenode insert int x,treenode t else if x t.val t.left insert x,t.left else if x t.val t.right insert x,t.right 如果x已經在tree中了...