1、概念
(1)前序遍歷
a、訪問根節點;b、前序遍歷左子樹;c、前序遍歷右子樹。
(2)中序遍歷
a、中序遍歷左子樹;b、訪問根節點;c、中序遍歷右子樹。
(3)後序遍歷
a、後序遍歷左子樹;b、後續遍歷右子樹;c、訪問根節點。
2、前序遍歷和中序遍歷還原二叉樹
思想如下:
a、根據前序遍歷結果,第一個元素爲二叉樹的根結點;
b、觀察中序遍歷結果,根結點左側的爲左子樹,若左子樹根結點前(後)再無任何元素,則左(右)子樹的左分支爲空;根結點右側的爲右子樹,若右子樹根結點前(後)再無任何元素,則左(右)子樹的左分支爲空;
c、上面的過程是遞歸的。先找到當前樹的根結點,然後劃分爲左右子樹,再進入左子樹重複上面的過程,最後進入右子樹重複上面的過程,最終還原一棵樹。
例:
已知前序遍歷:ABDHIEJKCFLMGNO
中序遍歷:HDIBJEKALFMCNGO
按照上述步驟先畫出二叉樹,然後在進行求解後序遍歷結果。結果爲:HIDJKEBLMFNOGCA
練習:
1、前序遍歷:GDAFEMHZ
中序遍歷:ADEFGHMZ
求得後序遍歷結果爲:AEFDHZMG
2、前序遍歷:ADCEFGHB
中序遍歷:CDFEGHAB
求得後序遍歷結果爲:CFHGEDBA
3、中序遍歷和後序遍歷還原二叉樹
思想如下:
a、根據後序遍歷結果,最後一個元素爲二叉樹的根結點;
b、觀察中序遍歷結果,其中根結點左側爲左子樹,若左子樹根結點前(後)再無任何元素,則左(右)子樹的左分支爲空;其中根結點右側爲右子樹,若右子樹根結點前(後)再無任何元素,則左(右)子樹的左分支爲空;
c、上面的過程是遞歸的。先根據後序遍歷結果找根結點,根結點左側爲左子樹,右側爲右子樹,再進入左子樹重複上面的過程,最後進入右子樹重複上面的過程,最終還原一棵樹。
例:
已知
中序遍歷:HDIBJEKALFMCNGO
後序遍歷:HIDJKEBLMFNOGCA
按照上述步驟先畫出二叉樹,然後在進行求解前序遍歷結果。結果爲:
ABDHIEJKCFLMGNO
練習:可參考前序遍歷和中序遍歷的練習