程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java應用合並刪除法刪除二叉樹中節點的辦法

java應用合並刪除法刪除二叉樹中節點的辦法

編輯:關於JAVA

java應用合並刪除法刪除二叉樹中節點的辦法。本站提示廣大學習愛好者:(java應用合並刪除法刪除二叉樹中節點的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是java應用合並刪除法刪除二叉樹中節點的辦法正文


本文實例講述了java應用合並刪除法刪除二叉樹中節點的辦法。分享給年夜家供年夜家參考。詳細剖析以下:

完成的思惟很簡略:

first:找到要刪除的節點
second:假如刪除的節點沒有右子樹那末左子樹鏈到父節點
third:假如刪除的節點沒有左子樹那末右子樹鏈到父節點
forth:假如刪除的節點又閣下孩子,那末可以合並刪除節點後的子樹:辦法有兩種一種是用刪除節點的左子樹的最右節點,指向刪除節點的右子樹,另外一種是用刪除節點的用字數的最左節點指向刪除節點的左子樹。

Java 完成以下:

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");
}

願望本文所述對年夜家的java法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved