遞歸刪除二叉樹(shù)中以x為根的子樹(shù)
名稱(chēng):刪除二叉樹(shù)中以x為根的子樹(shù)
說(shuō)明:此程序的大部分內(nèi)容,注釋都解釋的較為詳細(xì)了。在這里需要提及一點(diǎn)的是此處遞歸函數(shù)flag傳遞的不是上篇中講的引用,而是普通的變量,因?yàn)樵谙蛳聜鬟f參數(shù)(當(dāng)前結(jié)點(diǎn)是否是x的信息)的過(guò)程中只要傳遞給對(duì)應(yīng)的子樹(shù),并不需要傳遞給整個(gè)樹(shù)的結(jié)點(diǎn)。在下一篇會(huì)做個(gè)關(guān)于遞歸傳遞參數(shù)的總結(jié)。
//遞歸刪除二叉樹(shù)中以x為根的子樹(shù),(flag為標(biāo)志)
int DelRoot_x(BiTree &T, int x,int flag)
{
if(T == NULL)
return 0;
else
{
if(T->data == x) //如果當(dāng)前節(jié)點(diǎn)的值為x,則更改標(biāo)志位,在下面將向遞歸子函數(shù)中傳遞flag值
{
flag = 1;
}
int lef_ret = DelRoot_x(T->lchild,x,flag); //遞歸左子樹(shù),lef_ret為從左子樹(shù)中返回的信息
int rig_ret = DelRoot_x(T->rchild,x,flag); //遞歸右子樹(shù),rig_ret為從右子樹(shù)中返回的信息
if(1 == flag) //如果標(biāo)志為1,說(shuō)明其祖父結(jié)點(diǎn)中有x,也就是說(shuō)當(dāng)前結(jié)點(diǎn)需要?jiǎng)h除
{
if(T->data == x) //如果是x結(jié)點(diǎn),則需要向上層結(jié)點(diǎn)傳遞信息,以便其父節(jié)點(diǎn)將對(duì)應(yīng)的指針域賦空
return 1;
delete T;
}
else
{
if(1 == lef_ret) //從子結(jié)點(diǎn)接受收的信息,即如果其子結(jié)點(diǎn)為x,需要將其指針域賦空
T->lchild = NULL;
if(1 == rig_ret ) //從子結(jié)點(diǎn)接受收的信息,即如果其子結(jié)點(diǎn)為x,需要將其指針域賦空
T->rchild = NULL;
}
}
return 0;
}
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- C++/JAVA/C#子類(lèi)調(diào)用父類(lèi)函數(shù)情況總結(jié)
- C++面試基礎(chǔ)之static關(guān)鍵字詳解
- C++稀疏矩陣的各種基本運(yùn)算并實(shí)現(xiàn)加法乘法
- Dijkstra算法最短路徑的C++實(shí)現(xiàn)與輸出路徑
- C++項(xiàng)目求Fibonacci數(shù)列的參考解答
- C++實(shí)踐數(shù)組作數(shù)據(jù)成員的參考
- 一張圖總結(jié)C++中關(guān)于指針的那些事
- C++實(shí)踐數(shù)組類(lèi)運(yùn)算的實(shí)現(xiàn)參考
- C++實(shí)踐分?jǐn)?shù)類(lèi)中運(yùn)算符重載的方法參考
- C++實(shí)現(xiàn)學(xué)生選課系統(tǒng)
相關(guān)文章
詳解_beginthreadex()創(chuàng)建線程
這篇文章主要介紹了詳解_beginthreadex()創(chuàng)建線程,使用_beginthreadex(),需要的頭文件支持#include <process.h> 下面我們就來(lái)看看具體的實(shí)現(xiàn)吧2022-01-01
C/C++中棧(stack)&堆(heap)詳解及其作用介紹
這篇文章主要介紹了C/C++中棧(stack)&堆(heap)詳解及其作用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
使用C語(yǔ)言遞歸與非遞歸實(shí)現(xiàn)字符串反轉(zhuǎn)函數(shù)char *reverse(char *str)的方法
本篇文章是對(duì)使用C語(yǔ)言遞歸與非遞歸實(shí)現(xiàn)字符串反轉(zhuǎn)函數(shù)char *reverse(char *str)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++實(shí)現(xiàn)動(dòng)態(tài)分配const對(duì)象實(shí)例
這篇文章主要介紹了C++實(shí)現(xiàn)動(dòng)態(tài)分配const對(duì)象實(shí)例,包括了const對(duì)象的創(chuàng)建、刪除及應(yīng)用實(shí)例,需要的朋友可以參考下2014-10-10

