pat 還原二叉樹 根據後序中序輸出先序

2021-07-11 06:59:42 字數 1400 閱讀 3848

還原二叉樹   (25分)

給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。

輸入首先給出正整數n(≤\le

≤50),為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母(區別大小寫)的字串。

輸出為乙個整數,即該二叉樹的高度。

9

abdfghiec

fdhgibeac

5

#include #include #include #include using namespace std;

typedef struct treetreenode,*tree;

tree t = null;

void xianzhong(char x,char z,int size,tree &tmp)

xianzhong(x+1,z,index,tmp->lchild); ///構造左孩子

xianzhong(x+1+index,z+index+1,size-index-1,tmp->rchild); ///構造右孩子

}void print(tree t)

}int high(tree t)

int main(int argc, char *argv)

根據後序和中序遍歷輸出先序遍歷   (25分)

本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。

第一行給出正整數nn

n(≤30\le 30≤3

0),是樹中結點的個數。隨後兩行,每行給出nn

n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。

在一行中輸出preorder:以及該樹的先序遍歷結果。數字間有1個空格,行末不得有多餘空格。

7

2 3 1 5 7 6 4

1 2 3 4 5 6 7

preorder: 4 1 3 2 6 5 7

#include #include #include #include using namespace std;

int xian[35]; ///定義先序序列

int k = 0; ///給先序計數

void houzhong(int h,int z,int size)

houzhong(h,z,index);

houzhong(h+index,z+index+1,size-index-1);

}int main(int argc, char *argv)

二叉樹 根據先序和中序遍歷輸出後序遍歷

根據兩種遍歷順序確定樹結構 build tree 題目描述 輸入第1行 二叉樹的前序遍歷順序 第2行 中序遍歷順序 輸出 二叉樹的後序遍歷順序 樣例輸入 abcdefgh cbedaghf 樣例輸出 cedbhgfa 分析 這道題最核心的問題在於如何建樹 或模擬建樹 類似於分治 遞迴 我們設先序串為...

根據前序 中序 後序遍歷還原二叉樹

參考 首先我們得知道概念 前序遍歷 先訪問當前節點,再訪問當前節點的左子樹,最後訪問當前節點的右子樹。對於二叉樹,深度遍歷與此同。規律 根在前 子樹在根後且左子樹比右子樹靠前,且第乙個就是根節點 中序遍歷 先訪問當前節點的左子樹,然後訪問當前節點,最後是當前節點的右子樹,二叉樹,中序遍歷會得到資料公...

重建二叉樹(根據二叉樹的前序和中序遍歷還原二叉樹)

思路 根據前序遍歷,我們可以知道二叉樹的根節點,根據這個跟節點我們可以在中序遍歷中找到該節點的位置k,小於k的節點均為該節點的左子樹,大於k的節點均為該節點的右子樹。這樣的話,我們就很容易想到遞迴的方式。每次遞迴都返回該子樹的根節點。public class solution public tree...