在網上找了很久發現能寫清楚的很少。,命名風格讓人真的很難理解。
參考了大神的** 原位址大神**
//已知層序和中序還原二叉樹
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 樹和二叉樹基本上都有先序 中序 後序 按層遍歷等遍歷順序,給定中序和其它一種遍歷的序列就可以確定一棵二叉樹的結構。假定一棵二叉樹乙個結點用乙個字元描述,現在給出中序和按層遍歷的字串,求該樹的先序遍歷字串。兩行,每行是由字...