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

2021-07-23 08:52:19 字數 819 閱讀 9911

根據兩種遍歷順序確定樹結構(build-tree)

題目描述

輸入第1行:二叉樹的前序遍歷順序

第2行:中序遍歷順序 輸出

二叉樹的後序遍歷順序

樣例輸入

abcdefgh

cbedaghf

樣例輸出

cedbhgfa

分析:

這道題最核心的問題在於如何建樹(或模擬建樹),類似於分治(遞迴) ,我們設先序串為a,中序串為b,用全域性變數s表示在a中查詢到了第幾個數

先看樣例,從a可知a是根節點,再根據中序遍歷的性質判定在b中,a的左兒子一定在a的左邊,右兒子一定在a的右邊

再由先序遍歷的性質得b是a的左兒子,此時s=1,再遞迴搜尋b的左右兒子,當b搜完後,s=5(f),那麼a的右兒子就是f,再遞迴搜尋f的左右兒子,整個程式就可以遞迴了

當帶引數的時候應該規定當前結點的左右兒子應該在哪個範圍裡找,否則會錯亂

(建樹)**如下:

#include#includechar a[1000],b[1000];

int n,s=1;

struct node

t[260];

void dfs(int q,int w,int o)//q,w為查詢範圍,o為父親

}void hdfs(int a)

}int main()

至於不需要建樹的程式其實只需要邊查詢邊輸出,此處就不給**了

玩轉二叉樹 根據中序和先序輸出層次遍歷序列

給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前序遍歷序列。數字間以空格分隔。在...

資料結構 二叉樹 根據後序和中序遍歷輸出先序遍歷

本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。第一行給出正整數n 30 是樹中結點的個數。隨後兩行,每行給出n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。在一行中輸出preorder 以及該樹的先序遍歷結果。數字間有1個空...

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

還原二叉樹 25分 給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入首先給出正整數n le 50 為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母 區別大小寫 的字串。輸出為乙個整數,即該二叉樹的高度。9 abdfghiec fdhgibe...