後序和中序遍歷創建二叉樹
核心思路:由後序確定根,由中序遍歷確定左、右子樹
-
假定給出中序遍歷:DBEGACHFI
-
後序遍歷:DGEBHIFCA
-
那麼我們由後序遍歷可以知道這個二叉樹的根爲A(後序遍歷的最後一個點肯定爲這個二叉樹的根)
-
由中序遍歷得知DBEG A CHFI,A的左子樹爲DBEG,右子樹爲CHFI
-
那麼問題是不是由
中序遍歷:DBEGACHFI
後序遍歷:DGEBHIFCA轉化爲
- 左子樹
- 中序遍歷:DBEG
- 後序遍歷:DGEB - 右子樹
- 中序遍歷:CHFI
- 後序遍歷:HIFC
最後瘋狂遞歸!直到不能遞歸!
是不是有點思路了?接下來看我畫的圖理解一下吧
- 左子樹
圖解思路
最終結果
代碼實現
先mark,下次一定
如果題目改成由前序遍歷和中序遍歷求出二叉樹,是不是能做了呢?
核心:一定要有中序遍歷(確定左右子樹)才能求出二叉樹,即只有前序、後序遍歷求不出二叉樹
2020年5月15日更
這是我第一次嘗試自己畫圖,大家覺得還可以可以點贊、收藏、關注一下吧!
也可以到我的個人博客參觀一下,估計近幾年都會一直更新!和我做個朋友吧!https://motongxue.gitee.io