問題詳情

23. 有一個二元樹,若其「後序」(postorder)遍歷結果為 EFCHGDBA,「中序」(inorder)
遍歷結果為 EFCABHDG,則「前序」(preorder)遍歷結果是什麼?
(A) ABCDEFGH
(B) ABHDEFGC
(C) ACFEBHDG
(D) ACFEBDHG

參考答案

答案:D

統計:A:1,B:4,C:7,D:12,E:0

難度:計算中

用户評論

不叫賭俠的陳小刀】評論

給定二元樹的後序 (postorder) 遍歷結果為 EFCHGDBA 和中序 (inorder) 遍歷結果為 EFCABHDG,我們需要求其前序 (preorder) 遍歷結果。我們可以通過構建二元樹來找到前序遍歷的結果。以下是逐步推導的過程:分析後序遍歷:後序遍歷的最後一個節點是根節點,因此根節點是 A。分析中序遍歷:根據中序遍歷,根節點 A 將數列分為左右子樹。即:左子樹:EFC右子樹:BHDG構建樹的左子樹和右子樹:現在,我們處理左子樹 EFC 和右子樹 BHDG。構建左子樹 EFC:在後序遍歷中,EFC 的部分是 EFC。在中序遍歷中,EFC 已經是 EFC。構建右子樹 BHDG:在後序遍歷中,BHDG 的部分是 HGDB。在中序遍歷中,BHDG 是 BHDG。現在,我們知道根節點 A,並且左右子樹已經確定。我們可以進一步分析每個子樹來找到其根節點。左子樹 EFC:後序遍歷:EFC中序遍歷:EFC根節點是 C(後序遍歷的最後一個元素)。根據中序遍歷,C 將 EFC 分為左右子樹:左子樹:EF右子樹:空右子樹 BHDG:後序遍歷:HGDB中序遍歷:BHDG根節點是 G(後序遍歷的最後一個元素)。根據中序遍歷,G 將 BHDG 分為左右子樹:左子樹:BHD右子樹:空現在我們有:左子樹的根是 C,其左右子樹為 EF 和空。右子樹的根是 G,其左右子樹為 BHD 和空。構建子樹:對於左子樹 EF:根節點是 F(後序遍歷的最後一個元素)。根據中序遍歷,F 將 EF 分為 E 和空。對於右子樹 BHD:根節點是 D(後序遍歷的最後一個元素)。根據中序遍歷,D 將 BHD 分為 BH 和空。現在,我們知道了完整的二元樹結構: