二叉樹知道前序 中序求後序序列

2022-02-13 21:59:50 字數 929 閱讀 2928

思路:

根據前序性質,每一顆子樹的前序第乙個節點永遠是其根節點(後序也有類似性質,所以知道後序中序求前序是乙個道理)。

根據中序性質,在中序序列中,某節點之前的節點全在其左邊,反之在其右邊。

那麼我們在前序序列中找到當前樹根節點時,再在中序序列中找到樹根節點的位置,那麼知道中序序列中,在根節點以前的節點都是其左子樹,之後的是右子樹,這樣就可以遞迴建這兩棵樹,這裡我們選擇直接列印後序序列,列印順序為遞迴左子樹,遞迴右子樹,列印自身。

**如下:

#include #include 

#include

#include

#include

using

namespace

std;

vector

ans;

vector

v1,v2;

void dfs(int a,int b,int

cnt)

else

if(cnt <= 0) return

;

inti;

for(i=0;v1[a] != v2[b+i];i++);

dfs(a+1

,b,i);

dfs(a+i+1,b+i+1,cnt-i-1

); ans.push_back(v1[a]);

return;}

intmain()

for(int i=0;i)

dfs(

0,0,n);

printf("%d

",ans[0

]);

for(int i=1;i)

printf("%d

",ans[i]);

puts(

"");

}return0;

}

二叉樹 已知前序和中序,求後序

題目描述 若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。分析 首先要明確乙個基礎的問題,前序遍歷的順序是 根 左 右 中序遍歷的順...

二叉樹遍歷(前序,中序,後序

二叉樹的遍歷有三種方式,如下 1 前序遍歷 dlr 首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。簡記根 左 右。2 中序遍歷 ldr 首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。簡記左 根 右。3 後序遍歷 lrd 首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。簡記左 右 根。例1 如上圖...

前序中序出後序 二叉樹

描述 輸入一棵二叉樹的先序和中序遍歷序列,輸出其後序遍歷序列。輸入輸入檔案為tree.in,共兩行,第一行乙個字串,表示樹的先序遍歷,第二行乙個字串,表示樹的中序遍歷。樹的結點一律用小寫字母表示。輸出輸出檔案為tree.out,僅一行,表示樹的後序遍歷序列。樣例輸入 abdec dbeac 樣例輸出...