首先,大部分解決方法基本上都是給定二叉樹的根節(jié)點,然后進行,先,中,后序進行遍歷。
不是字面意思上的那種,先就是從頭到尾,中就是給定一個中間節(jié)點,然后進行前后遍歷!,根不是從最后節(jié)點開始的。而都是從二叉樹的頭(根),進行往下遍歷開始!
這使我進入了一個誤區(qū),我說大部分資料里面的遍歷操作為什么那么簡潔,短小!原來是這樣子弄的。我說為什么沒有if判斷該節(jié)點的父節(jié)點是否為null,該節(jié)點在父節(jié)點的左邊還是右邊!
如果用我的那種方式進行判斷的話,結構會進行很復雜的if判斷,是否節(jié)點是尾結點,節(jié)點下面是否還有子節(jié)點,節(jié)點上面是否還有父節(jié)點,節(jié)點是在父節(jié)點的左邊還是右邊(因為如果中序節(jié)點的時候,如果給定的節(jié)點是在父節(jié)點的左邊那么它與這個節(jié)點在父節(jié)點右邊時的邏輯完全相反即可)。
并且還要有一種方法進行判斷該二叉樹是否遍歷已經完成。有一種解決方案就是,為結構體(C語言)里面再添加一個元素,用來標識,該節(jié)點是否進行了遍歷!
遞歸嘛就是多級函數調用,fun(){ fun(){ } } 這樣大鏡子里面套小鏡子無限循環(huán)(當然你要設置限制,來能使它跳出循環(huán)中。)通過調用遞歸的方式可以使代碼整潔,當然邏輯設計的時候可能比較難一些,因為你要考慮每一個節(jié)點在運行這個函數的時候,運行的代碼都是一樣的!
而非遞歸就是一個函數里面解決問題。
遞歸也是循環(huán),只是它的循環(huán)程序設計者不用擔心,系統(tǒng)會幫你做。
而非遞歸就是,將遞歸拆分出來,用循環(huán)來實現函數的層疊調用,而每個函數里面的數據用棧來進行存儲!
另外有需要云服務器可以了解下創(chuàng)新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網站標題:被二叉樹遍歷逼瘋了-創(chuàng)新互聯
鏈接地址:http://www.chinadenli.net/article46/didjeg.html
成都網站建設公司_創(chuàng)新互聯,為您提供ChatGPT、網站收錄、企業(yè)網站制作、做網站、外貿網站建設、Google
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯