package com.ran;
public
class
hello
}//定義二叉樹
class
erchashu
//前序遍歷
public
void
qianxu()
else
}public
void
shanchu
(int no)
else
}else
}public
void
zhongxu()
else
}public
void
houxu()
else
}public heronode qianxuchazhao
(int no)
else
return qq;
}public heronode zhongxuchazhao
(int no)
else
return qq;
}public heronode houxuchazhao
(int no)
else
return qq;}}
class
heronode
public
intgetno()
public
void
setno
(int no)
public string getname()
public
void
setname
(string name)
public heronode getzuo()
public
void
setzuo
(heronode zuo)
public heronode getyou()
public
void
setyou
(heronode you)
@override
public string tostring()
';}public
void
qianxu()
//遞迴向右子樹前序遍歷if(
this
.you!=null)
}public
void
zhongxu()
//輸出父節點
system.out.
println
(this);
//遞迴向右子樹中序遍歷if(
this
.you!=null)
}public
void
houxu()
if(this
.you!=null)
system.out.
println
(this);
}public heronode qianxuchazhao
(int no)if(
this
.zuo!=null)
if(temp!=null)
elseif(
this
.you!=null)
return temp;
}public heronode zhongxuchazhao
(int no)
if(temp!=null)
elseif(
this
.no==no)if(
this
.you!=null)
return temp;
}public heronode houxuchazhao
(int no)
if(temp!=null)if(
this
.you!=null)
if(temp!=null)if(
this
.no==no)
return temp;
}public
void
shanchu
(int no)if(
this
.you!=null &&
this
.you.no==no)if(
this
.you!=null)if(
this
.zuo!=null)
}}
**執行效果如下:
由於刪除的是根節點,因此直接為空,無法遍歷
二叉樹的節點刪除
刪除 int treedeletedata pnode proot,int data pnode pfind proot pnode pfather null pnode pdelete null 01找到資料為data的節點的位址以及父節點的位址 while pfind null else if ...
刪除二叉樹的節點
總體思想 分多種情況討論 1.被刪除節點沒有子樹的情況,直接刪除,並修改對應父節點的指標為空。2.對於只有乙個子樹的情況,考慮將其子樹作為其父節點的子樹,關於是左還是右,根據被刪除的節點確定。3.最複雜的是有兩個子數的情況,可以考慮兩種方法,都是同樣的思想 用被刪除節點a的左子樹的最右節點或者a的右...
排序二叉樹 刪除節點
前面 我們已經了解了什麼是排序二叉樹以及排序二叉樹的遍歷和新增元素,現在我們一起來看一下,排序二叉樹是如何刪除元素的。步驟先找到要刪除的節點 targetnode 找到要刪除節點的父節點 parent 一 刪除葉子節點 1.確定 targetnoe 是 parent 的左子節點還是右子節點 2.根據...