搜尋二叉樹:
非遞迴搜尋二叉樹的插入:
查詢: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 在二叉搜尋樹中插入乙個元素...