小編給大家分享一下如何實現(xiàn)遞歸刪除二叉樹中以x為根的子樹,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
名稱:刪除二叉樹中以x為根的子樹
說明:此程序的大部分內容,注釋都解釋的較為詳細了。在這里需要提及一點的是此處遞歸函數(shù)flag傳遞的不是上篇中講的引用,而是普通的變量,因為在向下傳遞參數(shù)(當前結點是否是x的信息)的過程中只要傳遞給對應的子樹,并不需要傳遞給整個樹的結點。在下一篇會做個關于遞歸傳遞參數(shù)的總結。
//遞歸刪除二叉樹中以x為根的子樹,(flag為標志) int DelRoot_x(BiTree &T, int x,int flag) { if(T == NULL) return 0; else { if(T->data == x) //如果當前節(jié)點的值為x,則更改標志位,在下面將向遞歸子函數(shù)中傳遞flag值 { flag = 1; } int lef_ret = DelRoot_x(T->lchild,x,flag); //遞歸左子樹,lef_ret為從左子樹中返回的信息 int rig_ret = DelRoot_x(T->rchild,x,flag); //遞歸右子樹,rig_ret為從右子樹中返回的信息 if(1 == flag) //如果標志為1,說明其祖父結點中有x,也就是說當前結點需要刪除 { if(T->data == x) //如果是x結點,則需要向上層結點傳遞信息,以便其父節(jié)點將對應的指針域賦空 return 1; delete T; } else { if(1 == lef_ret) //從子結點接受收的信息,即如果其子結點為x,需要將其指針域賦空 T->lchild = NULL; if(1 == rig_ret ) //從子結點接受收的信息,即如果其子結點為x,需要將其指針域賦空 T->rchild = NULL; } } return 0; }
以上是“如何實現(xiàn)遞歸刪除二叉樹中以x為根的子樹”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)網站建設公司行業(yè)資訊頻道!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站chinadenli.net,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
本文題目:如何實現(xiàn)遞歸刪除二叉樹中以x為根的子樹-創(chuàng)新互聯(lián)
分享URL:http://chinadenli.net/article44/cogcee.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、全網營銷推廣、網頁設計公司、品牌網站建設、企業(yè)建站、標簽優(yōu)化
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)