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

2021-10-02 13:27:12 字數 874 閱讀 1646

給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。

輸入第一行給出乙個正整數n(≤30),是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前序遍歷序列。數字間以空格分隔。

在一行中輸出該樹反轉後的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。

7

1 2 3 4 5 6 7

4 1 3 2 6 5 7

4 6 1 7 5 3 2
思路:用dfs根據中序和先序建樹,然後因為映象的和原來的區別就是左右孩子互換,所以在bfs層次遍歷時,先放右孩子再放左孩子即可。

完整**:

#include #define int long long

using namespace std;

const int maxn=100;

struct tree

;tree a[maxn];

int n,mid[maxn],pre[maxn];

void dfs(int x,int y,int len)//x,y分別表示當前二叉樹在mid陣列和pre陣列的首位址,len為其長度

if(pos!=len-1)

}queueq;

void bfs()

cout<>n;

for(int i=0;i>mid[i];

for(int i=0;i>pre[i];

dfs(0,0,n);

bfs();

return 0;

}

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

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

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

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

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

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