二叉排序樹的理論看課本
**如下:
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中了...