資料結構 搜尋二叉樹的插入 刪除 查詢

2021-08-15 20:48:59 字數 2090 閱讀 9739

搜尋二叉樹:

非遞迴

搜尋二叉樹的插入:

int  bstreeinsert(bstreenode** pptree,datatype x)

parent

=null;

cur=*pptree;

while(cur)

else

if(cur->_dataelse

}//找到要插入的位置

if(parent

->_dataelse

return

0;//插入成功

}

查詢:

bstreenode*bstreefind(bstreenode* tree,datatype x)

else

if(tree->_dataelse

}return

-1;//查詢失敗

}

刪除:

1、要刪除的節點左、右都為空;

2、要刪除的節點左為空;

3、要刪除的節點右為空;

4、兩邊都不為空。

第一種情況可以歸為二三類一起處理。

int bstreeremove(bstreenode**pptree, datatype x)

else

if (cur->_data < x)//同上

else

//找到節點後進行刪除工作

else

if (cur->_right ==

null) //2、右孩子為空

else

//3、左右孩子都不為空

del = sub;

cur->_data = sub->_data;//交換最做節點和根節點的值

if (parent

->_left == sub)

parent

->_left = sub->_right;

else

parent

->_right = sub->_right;

}free(del);//刪除此節點

del =

null;

return

0;//刪除成功}}

return

-1;//刪除失敗

}

遞迴

插入:

int bstreeinsertr(bstreenode**pptree,datatype x)//插入

if((*pptree)->_data>x)

return bstreeinsertr(&(*pptree)->_left,x);//(*pptree)代表根節點指標

else

if((*pptree)->_datareturn bstreeinsertr(&(*pptree)->_right,x);

else

return -1;

}

刪除:

int bstreeremover(bstreenode** pptree, datatype x) //刪除

assert(pptree);

if(cur->_data>x)

else

if(cur->_dataelse//找到後進行刪除

else

if(cur->_right==null)//右為空

else//左右都不為空

del=sub;

cur->_data=sub->_data;

return bstreeremover(&(cur->_right),sub->_data);

}free(del);

del=null;

return

0; }

}

查詢:

bstreenode* bstreefindr(bstreenode* tree,datatype x)//查詢

return-1;

}

資料結構 二叉搜尋樹 查詢 插入 刪除

2017 12 12 2 00 武漢工程大學郵電與資訊工程學院郵科院校區 軟體工程1604穀子毅 二叉搜尋樹 也叫二叉排序樹或二叉查詢樹 一顆二叉樹,可以為空 如果不空,滿足以下性質 1.非空左子樹的所有鍵值小於根節點 2.非空左子樹的所有鍵值小於根節點 3.左右子樹都是二叉搜尋數 部分函式 1.查...

搜尋二叉樹 插入 刪除)

1.1搜尋二叉樹的概念 二叉搜尋樹又稱二叉排序樹,它或者是一棵空樹,或者是具有一下性質的樹 1.2二叉搜尋樹操作 1.二叉搜尋樹的查詢 若根節點不為空 否則,返回false node find const k key else if cur kv.first kv.first else return...

資料結構 二叉搜尋樹的插入刪除查詢

bst.h pragma once includetypedef char btreetype 建立乙個二叉搜尋樹的結構 typedef struct btreenodebtreenode 初始化乙個二叉搜尋樹 void btreeinit btreenode btree 在二叉搜尋樹中插入乙個元素...