#include "stdio.h"
#include "math.h"
//二叉排序樹
typedef struct bitnode//結點結構
bitnode,*bitnree;
//遞迴查詢二叉排序樹t中是否存在key
//指標f指向t的雙親,其初始呼叫值為null
//如果查詢成功,指標p指向這個元素結點,返回ture,否則指標p指向查詢路徑上的最後乙個結點並且返回false
int searchbst(bitnree t, int key, bitnree f, bitnree *p)
else if (key == t->data)
else if (key < t->data)
return searchbst(t->lchild, key, t, p);
else
return searchbst(t->rchild, key, t, p);
}//二叉排序樹的插入操作
//當二叉排序樹中不存在關鍵字等於key的資料元素時,插入key並返回true,否則就返回false
int insertbst(bitnree *t, int key)
else
return false;
}int main()
;bitree t = null;
for (i = 0; i < 0; i++)
}//如果二叉排序樹t中存在關鍵字等於key的資料元素時,就刪除這個元素結點並且返回true,否則返回false
int deletebst(bitree *t, int key)
}int delete(bitree *p)
else if ((*p)->lchild == null)//左子樹空就只需要重接它的右子樹
else//左右子樹都不空
(*p)->data = s->data;//s指向被刪結點的直接前驅
if (q != *p)
q->rchild = s->lchild;//重接q的右子樹
else
q->lchild = s->lchild;//重接q的左子樹
free(s);
}return true;
}
二叉排序樹 插入 刪除 查詢
原本是想寫關於android分享功能的部落格,但是沒真機不好去測試,大白天的手機被3歲娃娃,拿去看少兒頻道了,關於二叉排序樹的定義是 二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2 若右子樹不空,則右子樹上所有結點的值均大於它的...
二叉排序樹刪除
二叉排序樹的刪除情況比較複雜,有以下三種情況需要考慮 第一種情況 刪除葉子節點 思路 第二種情況 刪除只有一棵子樹的節點,比如1 思路 如果targetnode有右子節點 第三種情況 刪除有兩棵子樹的節點 比如 7,3,10 思路 public class binarysorttreedemo bi...
二叉排序樹的刪除和查詢
二叉排序樹的刪除和查詢可以用遞迴實現,也可以用迴圈實現。1.查詢 1.1查詢值 bool search tnode root,int value root false while root data value 1.2 查詢中序遍歷的字首或者字尾 node search node tnode roo...