先序中序重建二叉樹

2021-08-28 08:55:32 字數 402 閱讀 6200

#includeusing namespace std;

vectorpre,in;

int p;

typedef struct node;

vectorpost;

int rec(int l,int r)

//通過前序和後序得到樹

int main()

for(int i=0;i>tem;

in.push_back(tem); }

tem=rec(0,n);

node a;

for(vector::iterator it=post.begin();it很容易想到,通過中序和後序也可以類似重建二叉樹。這裡就不再贅述

關於先序後序建立二叉樹:先序後序無法確定某個節點的左右孩子,所以這個方法是行不通的

先序 中序遍歷重建二叉樹

假設已知先序序列為pre1,pre2,pre3 pren,中序序列為in1,in2,in3,inn,如圖所示,那麼由先序序列的性質可知,先序序列的第乙個元素pre1是當前二叉樹的根節點,再由中序序列的性質可知,當前二叉樹的根節點將中序序列劃分為左子樹和右子樹。因此,要做的就是在中序序列中找到某個結點...

先序中序轉二叉樹

在紙上計算一下他們轉的過程就很容易發現規律 寫程式更簡單,只需要計算出每個子樹的起始位置 計算的時候使用靜態鍊錶更為方便 include include include include include using namespace std struct node vector int in,pre...

二叉樹 先序 中序 後序

同學整理的,順便傳上分享下 一,已知先序和中序 求後序 1 include2 include3 include4 using namespace std 5char s1 10 s2 10 ans 10 6 int o 0 7 void tree int n char s1 char s2 char...