已知中序遍歷和層序遍歷還原二叉樹

2021-10-01 08:38:56 字數 1194 閱讀 7833

在網上找了很久發現能寫清楚的很少。,命名風格讓人真的很難理解。

參考了大神的** 原位址大神**

//已知層序和中序還原二叉樹

vector <

int>layer;

//層序遍歷結果

vector<

int> leftlayer;

vector <

int> rightlayer;

//in【il,ir】中序遍歷結果

node *

creat

(vector<

int>layer,

int il,

int ir)

// if(layer.size() == 0)

// node *root=

new node;

//新建乙個新的結點,用來存放當前二叉樹的根結點

root-

>data=layer[0]

;//新結點的資料域為根結點的值

int k;

//去確定根結點在層序遍歷中的位置,用於區分左右子樹

for(k=il ; k <=ir ; k++)}

vector<

int> leftlayer;

vector <

int> rightlayer;

//把左右子樹給分別放到leftlayer和rightlayer中去遞迴

for(

int i=

1;isize()

;i++)}

if(isleft==

true

) leftlayer.

push_back

(layer[i]);

else

rightlayer.

push_back

(layer[i]);

isleft=

false;}

root-

>lchild =

creat

(leftlayer,il,k-1)

;//左子樹遞迴

root-

>rchild =

creat

(rightlayer,k+

1,ir)

;//右子樹遞迴

return root;

//返回根節點的位址

}

已知中序遍歷和層序遍歷還原二叉樹

解答思路 相關題目 給出二叉樹的中序遍歷序列和層序遍歷序列,程式設計還原該二叉樹。第1行 二叉樹的中序遍歷序列 第2行 二叉樹的層序遍歷序列 二叉樹的前序遍歷序列 abcdefg dbafegc abdcefg include include include include using namesp...

已知中序遍歷和先序遍歷重建二叉樹

main.cpp constructbinarytree created by bazinga on 2017 3 12.根據前序遍歷和中序遍歷求二叉樹的結構 已知前序遍歷的第乙個值為根節點 而根節點在中序遍歷中的位置就能確定他的左右子樹。然後對區分開的左右子樹進行遞迴。include includ...

二叉樹遍歷(已知中序和按層遍歷求先序 遞迴)

時間限制 1000 ms 記憶體限制 65536 kb 提交數 8 通過數 6 樹和二叉樹基本上都有先序 中序 後序 按層遍歷等遍歷順序,給定中序和其它一種遍歷的序列就可以確定一棵二叉樹的結構。假定一棵二叉樹乙個結點用乙個字元描述,現在給出中序和按層遍歷的字串,求該樹的先序遍歷字串。兩行,每行是由字...