日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java刪除二叉搜索樹的任意元素的方法詳解

瀏覽:187日期:2022-09-03 15:58:31

本文實例講述了Java刪除二叉搜索樹的任意元素的方法。分享給大家供大家參考,具體如下:

一.刪除思路分析

在刪除二叉搜索樹的任意元素時,會有三種情況:

1.1 刪除只有左孩子的節(jié)點

節(jié)點刪除之后,將左孩子所在的二叉樹取代其位置;連在原來節(jié)點父親元素右節(jié)點的位置,比如在圖中需要刪除58這個節(jié)點。

Java刪除二叉搜索樹的任意元素的方法詳解

刪除58這個節(jié)點后,如下圖所示:

Java刪除二叉搜索樹的任意元素的方法詳解

1.2 刪除只有右孩子的節(jié)點:

節(jié)點刪除之后,將右孩子所在的二叉樹取代其位置;連在原來節(jié)點的位置,比如在下圖中需要刪除58這個節(jié)點。

Java刪除二叉搜索樹的任意元素的方法詳解

刪除58這個節(jié)點后,如下圖所示:

Java刪除二叉搜索樹的任意元素的方法詳解

這里需要說明說一下,以上兩種情況其實包含了葉子節(jié)點情況的,我們可以把葉子節(jié)點理解成只有左孩子的節(jié)點,也可以把它理解為只有右孩子的節(jié)點,只不過左孩子、右孩子為null。

1.3 刪除包含左右孩子的節(jié)點

如下圖,二叉搜索樹包含有左右孩子,假設(shè)現(xiàn)需要刪除58這個節(jié)點。

Java刪除二叉搜索樹的任意元素的方法詳解

針對該種情況,分析如下:我們把58這個節(jié)點記為d節(jié)點(包含有左子樹與右子樹),如下圖所示:

Java刪除二叉搜索樹的任意元素的方法詳解

針對這種節(jié)點刪除情況需要把左子樹與右子樹融合起來,融合方法:從d這節(jié)點的左孩子與右孩子中找一個比d節(jié)點還要大的節(jié)點取代d節(jié)點,根據(jù)二叉搜索樹的性質(zhì)可知(左邊節(jié)點<當前節(jié)點<右邊節(jié)點),這個需要被找的節(jié)點存在于d節(jié)點的右孩子節(jié)點中。

尋找規(guī)則:尋找需要被刪除節(jié)點58(d)的后繼的所有元素中,離 58 最近的且比 58 大的節(jié)點,在本例中為59這個節(jié)點【即右子樹中的最小值】,記為s,如下圖所示:

Java刪除二叉搜索樹的任意元素的方法詳解

刪除步驟:

(1)從d的右子樹中刪除最小值,將刪除最小值s后的d的右子樹, 變?yōu)閐后繼節(jié)點s的右孩子,如下圖所示:

Java刪除二叉搜索樹的任意元素的方法詳解

(2)將d節(jié)點(58節(jié)點)的左子樹,變?yōu)楹罄^節(jié)點s(59節(jié)點)的左子樹,如下圖所示:

Java刪除二叉搜索樹的任意元素的方法詳解

(3)將后繼節(jié)點s(59節(jié)點)連接到d節(jié)點(58節(jié)點)父親節(jié)點的右邊,刪除d節(jié)點(58節(jié)點)后,后繼s節(jié)點(59節(jié)點)成為新的根,如下圖所示:

Java刪除二叉搜索樹的任意元素的方法詳解

二、編碼實現(xiàn)二叉搜索樹的任意元素

根據(jù)上述的分析,在此基礎(chǔ)上進行編碼,刪除代碼如下:

//從二叉搜索樹中刪除元素為e的節(jié)點 public void remove(E e) { root = remove(root, e); } //刪除以node為根的二叉搜索樹中值為e的節(jié)點,遞歸算法 //返回刪除節(jié)點后更新的二叉搜索樹的根 private Node remove(Node node, E e) { if (node == null) return null; if (e.compareTo(node.e) < 0) {//e<node.e (被刪除元素e小于當前節(jié)點值e) node.left = remove(node.left, e); return node; } if (e.compareTo(node.e) > 0) {//e>node.e (被刪除元素e大于當前節(jié)點值e) node.right = remove(node.right, e); return node; } else {//e==node.e (被刪除元素e等于當前節(jié)點值e) //待刪除節(jié)點左子樹為空情況 if (node.left == null) {Node rightNode = node.right;node.right = null;size--;return rightNode; } //待刪除節(jié)點右子樹為空情況 if (node.right == null) {Node leftNode = node.left;node.left = null;size--;return leftNode; } //左右子樹均不為空 //方法:找到比待刪除節(jié)點大的最小節(jié)點,即待刪除節(jié)點右子樹的最小節(jié)點 //用這個節(jié)點頂替待刪除節(jié)點的位置 Node successor = minimum(node.right); successor.right = removeMin(node.right); successor.left = node.left; node.left = node.right = null; return successor; } }

對于上述代碼中的minimum函數(shù),在5.3節(jié)中已經(jīng)實現(xiàn),此處同樣也把代碼列出來:

// 尋找二分搜索樹的最小元素 public E minimum() { if (size == 0) { throw new IllegalArgumentException('BST is empty'); } Node ninNode = minimum(root); return ninNode.e; } // 返回以node為根的二分搜索樹的最小值所在的節(jié)點 private Node minimum(Node node) { if (node.left == null) { return node; } //返回相應(yīng)的節(jié)點的左子樹的最小值 return minimum(node.left); }

源碼地址 https://github.com/FelixBin/dataStructure/blob/master/src/BST/BST.java

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

希望本文所述對大家java程序設(shè)計有所幫助。

標簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文字幕av一区二区三区四区| 久久精品青草| 久久九九99| 九色精品91| 成人av二区| 99亚洲视频| 亚洲免费一区三区| 日韩欧美中文在线观看| 日韩一区二区三区免费视频| 日本午夜精品一区二区三区电影| 波多野结衣一区| 午夜在线精品| 日韩高清一区在线| 麻豆视频一区| 日韩国产综合| 欧美精品黄色| 欧美另类中文字幕| 国产一区二区视频在线看| 国产99久久| 日本不卡中文字幕| 亚洲精品看片| 日韩av三区| 免费观看在线综合| 亚洲精品网址| 99久久www免费| 欧美激情国产在线| 日本欧美一区| 国产一区国产二区国产三区 | 欧美~级网站不卡| 少妇精品久久久一区二区| 久久一区二区三区电影| 国产成人免费| 美女在线视频一区| 国产精品v亚洲精品v日韩精品| 亚洲精品黄色| 亚洲精品第一| 男女激情视频一区| 免费日韩av片| 性色一区二区| 亚洲电影有码| 中文在线免费视频| 久久久天天操| 美女网站一区| 天堂成人免费av电影一区 | 欧美亚洲一区二区三区| 亚洲一二av| 久久精品xxxxx| 精品高清久久| 亚洲精品在线影院| 国产精品一区2区3区| 另类欧美日韩国产在线| 深夜视频一区二区| 国产精品入口久久| 久久激情五月婷婷| 日本不卡视频在线观看| 久久亚洲国产精品一区二区| 狠狠久久婷婷| 乱人伦精品视频在线观看| 欧美日韩精品免费观看视频完整| 日本在线啊啊| 久久黄色影院| 99热精品在线| 亚洲专区一区| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 久久久国产亚洲精品| 精品国产成人| 91精品一区二区三区综合在线爱 | 999精品色在线播放| 91精品久久久久久久久久不卡| 日韩欧美字幕| 91国语精品自产拍| 六月丁香综合| 久久精品97| av中文资源在线资源免费观看| 成人国产精选| 欧美国产91| 久久99伊人| 久久中文字幕导航| 久久精品青草| 天堂久久av| 成年男女免费视频网站不卡| 国产一区清纯| 日本欧美大码aⅴ在线播放| 成人在线免费观看91| 亚洲二区视频| 日本欧美一区二区在线观看| 成人台湾亚洲精品一区二区| 亚洲成人三区| 久久99视频| 99国产精品久久久久久久| 国产精品资源| 亚洲午夜久久久久久尤物| 日本不卡一二三区黄网| 日韩av首页| 欧美久久久网站| 亚洲精品888| 精品视频一区二区三区在线观看| 亚洲免费婷婷| 久久精品青草| 国产不卡精品在线| 91精品国产一区二区在线观看| 日韩一区二区三区免费| 日欧美一区二区| 亚洲高清影视| 高清一区二区| 国产精品亚洲四区在线观看| 日韩另类视频| 精品黄色一级片| 91精品日本| 婷婷综合福利| 综合国产视频| 亚洲一区二区三区四区五区午夜| www.九色在线| 久久字幕精品一区| 免费一级欧美在线观看视频| 亚洲ab电影| 亚洲一区久久| 在线视频日韩| 亚洲欧美日韩视频二区| 美女少妇全过程你懂的久久| 欧美成a人国产精品高清乱码在线观看片在线观看久| 在线亚洲欧美| 亚洲在线免费| 亚洲专区视频| 日韩中文字幕| 日韩成人一级| 欧美永久精品| 老司机精品视频网| 国产成人免费av一区二区午夜| 国产中文字幕一区二区三区| 久久免费精品| 四季av一区二区凹凸精品| 日韩精品dvd| 一本一道久久a久久精品蜜桃| 久久高清免费| 亚洲欧美日本国产专区一区| 国产综合精品| 视频一区欧美精品| 欧美视频一区| 国产一区二区三区黄网站| 日韩亚洲一区在线| 亚洲神马久久| 欧美久久一区二区三区| 精品精品国产三级a∨在线| 天堂а√在线最新版中文在线| 综合日韩av| 好吊日精品视频| 日韩超碰人人爽人人做人人添| 精品亚洲自拍| 婷婷综合五月| 日韩一区二区三区四区五区| 日韩三区四区| 国产一区福利| 99国产精品| 久久精品一本| 免费成人性网站| 国语精品一区| 亚洲免费成人av在线| 久久精品人人| 亚洲一区日韩在线| 久久久91麻豆精品国产一区| 亚洲欧美日韩专区| 国产一区二区三区亚洲综合| 美女精品在线观看| 波多视频一区| 国产精一区二区| 欧美在线网站| 不卡专区在线| 国产精品欧美三级在线观看| 最新国产拍偷乱拍精品| 国产91欧美| 国产精品一国产精品| 蜜臀av亚洲一区中文字幕| 精品亚洲精品| 国产麻豆一区二区三区| 日韩制服丝袜av| 亚洲欧美伊人| 亚洲h色精品| 国产自产自拍视频在线观看| 国产一卡不卡| 69堂免费精品视频在线播放| 99国产精品久久久久久久| 99久久99久久精品国产片果冰| 精品网站999| 美女精品视频在线| 国产精品白丝久久av网站| 日本视频在线一区| 日韩一区二区三区四区五区| 丝袜诱惑制服诱惑色一区在线观看| 日韩电影免费在线观看| 高清日韩欧美| 97精品国产| 亚洲精品**中文毛片| 国产精品伦理久久久久久| 成人国产精品一区二区免费麻豆| 国产一区三区在线播放| 精品99在线| 日韩在线免费| 欧美美女一区| 男女男精品网站|