您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎么解析python二叉樹的中序遍歷,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
二叉樹的中序遍歷
給定一個二叉樹,返回它的 中序 遍歷。
示例:
輸入: [1,null,2,3]
輸出: [1,3,2]
進階: 遞歸算法很簡單,你可以通過迭代算法完成嗎?
用棧(Stack)的思路來處理問題。
中序遍歷的順序為左-根-右,具體算法為:
從根節點開始,先將根節點壓入棧
然后再將其所有左子結點壓入棧,取出棧頂節點,保存節點值
再將當前指針移到其右子節點上,若存在右子節點,則在下次循環時又可將其所有左子結點壓入棧中
動畫演示GIF加載有點慢,請稍待片刻加載顯示^_^
下面這種寫法使用了一個輔助結點p,這種寫法其實可以看作是一個模版,對應的還有前序和后序的模版寫法,形式很統一,方便于記憶。上篇更新前序的和后面要更新后序文章中都會補充該寫法。思路與代碼如下:
輔助結點p初始化為根結點,while循環的條件是棧不為空或者輔助結點p不為空
在循環中首先判斷如果輔助結點p存在,那么先將p加入棧中,此時p指向其左子結點
否則如果p不存在的話,表明沒有左子結點,我們取出棧頂結點,然后將p的結點值加入結果res中,將p指向棧頂結點的右子結點
看完上述內容,你們對怎么解析python二叉樹的中序遍歷有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。