二叉樹的刪除節點

2021-10-09 10:40:32 字數 2328 閱讀 5928

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.根據...