intk=pos[pre[prel+1]]; if(k == postr-1) isunique=false; intleftLen=k-postl+1; build(prel+1,prel+leftLen,postl,k); res.pb(root); build(prel+leftLen+1,prer,k+1,postr-1); } } intmain() { cin>>n; for(inti=0;i<n;i++) cin>>pre[i]; for(inti=0;i<n;i++) ...
v.push_back(pre[prel]);/*在前序序列中,如果以pre[prel]为根节点的子树的节点数-a这个节点大于num, 因为前序的遍历序列是根左右,那么就说明以pre[prel]为根的树还有右子树*/if(prer - prel -1>num) getorder(prel+ num +2, prer, postidx +1, postr -1); }intmain() {intn; scanf("%d"...
int pre[33],post[33]; vector<int> inorder; bool unique=true; void dfs(int pres,int pree,int posts,int poste) { if(pres==pree) {//叶子结点 inorder.push_back(pre[pres]); return ; } if(pre[pres]==post[poste]) { int t=pres+1; while(t<=pree&&pre[t]!=post[poste-1]) ++...
tree[pre[st1]].first=pre[st1+1];buildTree(st1+1,lca[pre[st1+1]]-st2+st1+1,st2,lca[pre[st1+1]]);if(lca[pre[st1+1]]==ed2-1) flag=false;else{ tree[pre[st1]].second=post[ed2-1];buildTree(ed1+lca[pre[st1+1]]+2-ed2,ed1,lca[pre[st1+1]]+1,ed2-1); } }voidinOrd...
if(post[r2]==pre[l1]) { break; } } intlen=r2-postl+1; // check unique if(len==prer-prel) { isUnique=false; //若非叶子结点只有左子树/右子树则不唯一 } intr1=l1+len-1; intl2=postl; //rebulid left-tree left[root]=reBuild(l1,r1,l2,r2); ...
1119 Pre- and Post-order Traversals #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e6+100;constintM=N*10;constintmod=1e9+7;constdoubleeps=1e-9;typedefpair<int,int>PII;#define endl '\n'#define x first#define y second#define INF 0x3f3f3f3f#define ls(k) k ...
#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intpre[50],post[50];vector<int>in;booluni=true;voidgetin(intpreL,intpreR,intpostL,intpostR){if(preL==preR){in.push_back(pre[preL]);return;}if(pre[preL]==post[postR]){inti=preL+1;while(i<=preR&&pre[i]!=pos...
1119 Pre- and Post-order Traversals (30 分) Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder and inorder traversal sequences, or preorder and inorder traversal sequences. However, if only the ...
A unique binary tree can be determined by a given pair of postorder and inorder traversal sequences, or preorder and inorder ... 查看原文 LeetCode重建二叉树系列问题总结 Traversal Return any binary tree that matches the given preorder and postorder traversals. Values in... Preorder and In...
=post[postR-1])i++;if(i>preL+1){//根节点两颗子树dfs(preL+1,i-1,postL,postL+(i-preL-1)-1);}else{flag=false;}in.push_back(pre[preL]);dfs(i,preR,postR-(preR-i+1),postR-1);}intmain(){scanf("%d",&n);pre.resize(n);post.resize(n);for(inti=0;i<n;++i){scanf...