題意:
給出乙個二叉樹的前序遍歷和後序遍歷,問有多少個滿足這樣結構的二叉樹?
思路:
直接畫乙個最簡單的二叉樹,比如根節點恰好只有乙個兒子,那麼寫出前序遍歷和後序遍歷會發現,根據兩個遍歷結構無法判斷二叉樹根節點的兒子是左兒子還是右兒子,那麼其實只要找出這樣的結構有多少個就行了,那麼答案就是2的多少次方。
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int n = 10005;
struct bigint
bigint(int v)
while(v);
}bigint operator +(const bigint &b)const
if(res.a[res.len] > 0) res.len++;
return res;
}bigint operator *(const bigint &b)const
if(up != 0)
res.a[i + b.len] = up;
}res.len = len + b.len;
while(res.a[res.len - 1] == 0 &&res.len > 1)
res.len--;
return res;
}void output()
};bigint ans(1);
int prestr[10005];
int length;
int poststr[10005];
int count1;
void calc(int a1,int b1,int a2,int b2)
if(i == b2-1) count1++;
calc(a1+1,a1+1+(i-a2),a2,i);
calc(a1+1+(i-a2)+1,b1,i+1,b2-1);
}int main()
ans.output();
return
0;}
二叉樹知道前序 中序求後序序列
思路 根據前序性質,每一顆子樹的前序第乙個節點永遠是其根節點 後序也有類似性質,所以知道後序中序求前序是乙個道理 根據中序性質,在中序序列中,某節點之前的節點全在其左邊,反之在其右邊。那麼我們在前序序列中找到當前樹根節點時,再在中序序列中找到樹根節點的位置,那麼知道中序序列中,在根節點以前的節點都是...
二叉樹的前序序列 中序序列 後序序列 層次序列
前序序列 根 左子樹 右子樹,中序序列 左子樹 根 右子樹,後序序列 左子樹 右子樹 根,層次序列 根 第二層從左到右 第三層從左到右 以此類推。中序序列又稱為對稱序列。前序序列第乙個節點為根節點,後序序列最後乙個節點為根節點,再在中序序列中找到根節點,中序序列中根節點左邊的為左子樹,右邊的為右子樹...
二叉樹已知前序和中序序列求後序序列(華科軟院上機)
問題分析 已知一顆二叉樹s的前序遍歷和中序遍歷序列,請程式設計輸出二叉樹s的後續遍歷序列。舉例 pre 先序 a b d e c f g in 中序 d b e a c g f 後序遍歷序列是 d e b g f c a include include 在中序序列中查詢根節點下標的函式,函式引數為 ...