欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java使用歸并刪除法刪除二叉樹中節(jié)點(diǎn)的方法

 更新時(shí)間:2015年05月30日 15:57:34   作者:hitxueliang  
這篇文章主要介紹了java使用歸并刪除法刪除二叉樹中節(jié)點(diǎn)的方法,實(shí)例分析了java二叉樹算法的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了java使用歸并刪除法刪除二叉樹中節(jié)點(diǎn)的方法。分享給大家供大家參考。具體分析如下:

實(shí)現(xiàn)的思想很簡(jiǎn)單:

first:找到要?jiǎng)h除的節(jié)點(diǎn)
second:如果刪除的節(jié)點(diǎn)沒(méi)有右子樹那么左子樹鏈到父節(jié)點(diǎn)
third:如果刪除的節(jié)點(diǎn)沒(méi)有左子樹那么右子樹鏈到父節(jié)點(diǎn)
forth:如果刪除的節(jié)點(diǎn)又左右孩子,那么可以歸并刪除節(jié)點(diǎn)后的子樹:方法有兩種一種是用刪除節(jié)點(diǎn)的左子樹的最右節(jié)點(diǎn),指向刪除節(jié)點(diǎn)的右子樹,另一種是用刪除節(jié)點(diǎn)的用字?jǐn)?shù)的最左節(jié)點(diǎn)指向刪除節(jié)點(diǎn)的左子樹。

Java 實(shí)現(xiàn)如下:

public void deleteByMerging(int el)
{
IntBSTNode tmp,node,p=root,prev=null;
/*find the node to be deleted*/
while(p!=null&&p.key!=el)
{
prev=p;
if(p.key<el)
p=p.right;
else p=p.left;
}
/*find end*/
node=p;
if(p!=null&&p.key==el)
{
if(node.right==null)
//node has no right child then its left child (if any) is attached to 
node=node.left;
//its parent
  else if(node.left==null)
  //node has no left child then its right child (if any) is attched to
  node=node.right
  //its parent
else{
tmp=node.left;  
while(tmp.right!=null)
tmp=tmp.right;
//find the rightmost node of the left subtree
tem.right=node.right;
//establish the link between the rightmost node of the left subtree and the right subtree
node=node.left;
}
if(p==root)
{
root=node;
}
else if (prev.left==p)
{
prev.left=node;
}
else prev.right=node
}
else if(root!=null)
  {
System.out.println("the node is not in the tree");
}
else System.out.println("The tree is empty");
}

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

相關(guān)文章

  • java生成指定范圍隨機(jī)數(shù)的多種代碼

    java生成指定范圍隨機(jī)數(shù)的多種代碼

    今天在寫代碼的時(shí)候需要用到一個(gè)生成指定范圍隨機(jī)數(shù)的函數(shù),百度了一下,發(fā)現(xiàn)了很多種方法,這里簡(jiǎn)單為大家整理一下,方便需要的朋友
    2017-08-08
  • Java的string類為什么是不可變的

    Java的string類為什么是不可變的

    這篇文章主要介紹了Java的string類為什么是不可變的,總結(jié)了三個(gè)答案,需要的朋友可以參考下
    2014-04-04
  • Java?多線程并發(fā)LockSupport

    Java?多線程并發(fā)LockSupport

    這篇文章主要介紹了Java?多線程并發(fā)LockSupport,LockSupport?類是用于創(chuàng)建鎖和其他同步類的基本線程阻塞原語(yǔ),更多相關(guān)內(nèi)容需要得小伙伴可以參考一下下面文章內(nèi)容
    2022-06-06
  • Java求最小生成樹的兩種算法詳解

    Java求最小生成樹的兩種算法詳解

    最小生成樹(Minimum Spanning Tree):在連通圖的所有生成樹中,所有邊的權(quán)值和最小的生成樹,稱為最小生成樹。這篇文章主要介紹了求最小生成樹的兩種方法:Prim算法和Kruskal算法,需要的可以參考一下
    2022-01-01
  • Java如何優(yōu)雅的實(shí)現(xiàn)微信登錄注冊(cè)

    Java如何優(yōu)雅的實(shí)現(xiàn)微信登錄注冊(cè)

    這篇文章主要給大家介紹了關(guān)于Java如何優(yōu)雅的實(shí)現(xiàn)微信登錄注冊(cè)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • 如何基于回調(diào)實(shí)現(xiàn)Java的異步調(diào)用

    如何基于回調(diào)實(shí)現(xiàn)Java的異步調(diào)用

    這篇文章主要介紹了如何基于回調(diào)實(shí)現(xiàn)Java的異步調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 一文帶你入門SpringMVC的配置與使用

    一文帶你入門SpringMVC的配置與使用

    Spring MVC是Spring Framework的一部分,是基于Java實(shí)現(xiàn)MVC的輕量級(jí)Web框架。本文將通過(guò)一些簡(jiǎn)單示例帶大家掌握SpringMVC的配置與使用,感興趣的可以了解一下
    2022-11-11
  • JAVA語(yǔ)言編程格式高級(jí)規(guī)范

    JAVA語(yǔ)言編程格式高級(jí)規(guī)范

    這篇文章主要介紹了JAVA語(yǔ)言編程格式高級(jí)規(guī)范,需要的朋友可以參考下
    2015-05-05
  • 解決springboot錯(cuò)誤:找不到或無(wú)法加載主類(配置編碼或者M(jìn)aven)

    解決springboot錯(cuò)誤:找不到或無(wú)法加載主類(配置編碼或者M(jìn)aven)

    這篇文章主要介紹了解決springboot錯(cuò)誤:找不到或無(wú)法加載主類(配置編碼或者M(jìn)aven)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • hadoop上傳文件功能實(shí)例代碼

    hadoop上傳文件功能實(shí)例代碼

    這篇文章主要介紹了hadoop上傳文件功能實(shí)例代碼,需要的朋友可以參考下
    2017-09-09

最新評(píng)論