JavaScript數據結構之二叉樹的刪除算法示例
本文實例講述了JavaScript數據結構之二叉樹的刪除算法。分享給大家供大家參考,具體如下:
從二叉查找樹上刪除節(jié)點的操作復雜程度取決于刪除哪個節(jié)點。如果刪除沒有子節(jié)點的節(jié)點就非常簡單,如果節(jié)點只有一個子節(jié)點,不管是左子節(jié)點還是右子節(jié)點,就變得稍微有點復雜,如果節(jié)點包含兩個子節(jié)點就最復雜。
如果待刪除節(jié)點是葉子節(jié)點,那么只需要將從父節(jié)點指向它的鏈接指向null。
如果待刪除節(jié)點只包含一個子節(jié)點,那么原本指向它的節(jié)點就得使其指向它的子節(jié)點。
如果待刪除節(jié)點包含兩個子節(jié)點,那么我們可以采用兩種方式,一種是查找待刪除節(jié)點左子樹上的最大值,一種是查找待刪除節(jié)點右節(jié)點上的最小值。我們采取后者,找到最小值后,將臨時節(jié)點上的值復制到待刪除節(jié)點,然后再刪除臨時節(jié)點。
刪除操作的代碼如下:
function getSmallest(node){//查找最小節(jié)點
while(node.left!=null){
node=node.left;
}
return node;
}
function remove(data){
root=removeNode(this.root,data);//將根節(jié)點轉換
}
function removeNode(node,data){
if(node==null){
return null;
}
if(data==node.data){
//如果沒有子節(jié)點
if(node.right==null&&node.left==null){
return null;//直接將節(jié)點設為空
}
//如果沒有左子節(jié)點
if(node.left==null){
return node.right;//直接指向其右節(jié)點
}
//如果沒有右子節(jié)點
if(node.right==null){
return node.left;
}
//如果有兩個節(jié)點
if(node.right!=null&&node.left!=null){
var tempNode=getSmallest(node.right);//找到最小的右節(jié)點
node.data=tempNode.data;
node.right=removeNode(node.right,tempNode.data);//依次尋找
return node;
}
}else if(data<node.data){
node.left=removeNode(node.left,data);
return node;
}else{
node.right=removeNode(node.right,data);
return node;
}
}
更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數據結構與算法技巧總結》、《JavaScript數學運算用法總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結》
希望本文所述對大家JavaScript程序設計有所幫助。
- JS實現二叉查找樹的建立以及一些遍歷方法實現
- JavaScript數據結構之二叉查找樹的定義與表示方法
- JavaScript數據結構與算法之二叉樹實現查找最小值、最大值、給定值算法示例
- JavaScript實現二叉樹定義、遍歷及查找的方法詳解
- JavaScript數據結構之二叉樹的查找算法示例
- JS實現的二叉樹算法完整實例
- JavaScript實現二叉樹的先序、中序及后序遍歷方法詳解
- javascript實現二叉樹遍歷的代碼
- Javascript實現從小到大的數組轉換成二叉搜索樹
- JavaScript實現的DOM樹遍歷方法詳解【二叉DOM樹、多叉DOM樹】
- JavaScript數據結構之二叉樹的遍歷算法示例
- JS中的算法與數據結構之二叉查找樹(Binary Sort Tree)實例詳解
相關文章
JavaScript中自帶的 reduce()方法使用示例詳解
下文小編給大家?guī)砹薺s中自帶的reduce()方法使用示例詳解,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧2016-08-08
javascript iframe中打開文件,并檢測iframe存在否
從iframe中打開文件,并檢測iframe存在否如果說只是檢測頁面存在否,直接設置target用偽協議就可以解決了...2008-12-12
Chart.js 輕量級HTML5圖表繪制工具庫(知識整理)
這篇文章主要介紹了Chart.js 輕量級HTML5圖表繪制工具庫,Chart.js基于HTML5 canvas技術支持所有現代瀏覽器,并且針對IE7/8提供了降級替代方案,感興趣的小伙伴們可以參考一下2018-05-05

