首先看例子,一步一步描述如何畫出二叉樹。點擊我。通過以上后,在做下面題。
- 已知一棵二叉樹的先序遍歷和中序遍歷或者已知一棵二叉樹的中序和后序遍歷可以畫出該二叉樹,但是已知一棵二叉樹的先序和后序無法確認一棵二叉樹。
題目:已知一棵二叉樹的先序遍歷為1、2、4、7、3、5、6、8,中序遍歷序列為4、7、2、1、5、3、8、6,畫出該二叉樹
分析:
根據先序的從前往后查找確定根節點,根據中序確定根節點的左右子樹。
由二叉樹的先序序列可知,二叉樹的根節點為1,由中序遍歷可知根節點把二叉樹分成兩個部分,4、7、2為根節點1的左子樹節點,5、3、8、6為根節點1的右子樹節點;
先序第二個節點2將節點1的左子樹4、7、2分成兩個部分,4、7為節點2的左子樹節點,節點2的右子樹為空;同樣先序第三個節點4將節點2的左子樹4、7分成兩個部分,節點4的左子樹為空,右子樹為7,7的左右子樹都為空。
同上,3將節點1的右子樹5、3、8、6分成兩個部分,節點3的左子樹為5,右子樹由8,6兩個節點,節點5的左右子樹為空,6將節點3的右子樹分成兩個部分,節點6左子樹為8,右子樹為空;拓展:
同樣我們也可以根據中序和后序遍歷畫出二叉樹,根據后序確定根節點,根據中序確定根節點的左右子樹,不過此時,我們確定根節點需要從后序的后面往前查找根節點。