本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。
第一行給出正整數n(≤30),是樹中結點的個數。隨後兩行,每行給出n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。
在一行中輸出preorder:
以及該樹的先序遍歷結果。數字間有1個空格,行末不得有多餘空格。
72 3 1 5 7 6 4
1 2 3 4 5 6 7
preorder: 4 1 3 2 6 5 7
2.中序遍歷的遞迴過程為:若二叉樹為空,遍歷結束。否則:①中序遍歷根結點的左子樹;②訪問根結點;
③中序遍歷根結點的右子樹。簡單來說中序遍歷就是從左子樹返回時遇到結點就訪問。
3.後序遍歷的遞迴過程為:若二叉樹為空,遍歷結束。否則:①後序遍歷根結點的左子樹;②後序遍歷根結點的右子樹;
③訪問根結點。簡單來說後序遍歷就是從右子樹返回時遇到結點就訪問。
1 #include 2using
namespace
std;34
void getpre(int *a,int *b,int n) //
其中陣列a為後序,b為中序,n為每次遍歷數目,用來求c這個先序516
}17 cout << "
"<18 getpre(a, b, i); //
對左子樹來查詢根結點
19 getpre(a+i, b+i+1, n-i-1); //
對右子樹來查詢根結點20}
21}2223
intmain()
2432
for(int i=0;i)
3336 cout << "
preorder:";
37getpre(a,b,n);
38return0;
39 }
二叉樹 根據先序和中序遍歷輸出後序遍歷
根據兩種遍歷順序確定樹結構 build tree 題目描述 輸入第1行 二叉樹的前序遍歷順序 第2行 中序遍歷順序 輸出 二叉樹的後序遍歷順序 樣例輸入 abcdefgh cbedaghf 樣例輸出 cedbhgfa 分析 這道題最核心的問題在於如何建樹 或模擬建樹 類似於分治 遞迴 我們設先序串為...
pat 還原二叉樹 根據後序中序輸出先序
還原二叉樹 25分 給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入首先給出正整數n le 50 為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母 區別大小寫 的字串。輸出為乙個整數,即該二叉樹的高度。9 abdfghiec fdhgibe...
重構二叉樹 根據前序和中序
重構二叉樹.cpp 定義控制台應用程式的入口點。include stdafx.h include iostream include stdlib.h include stdio.h include string.h using namespace std int i,j struct binaryn...