给出一颗BST树 求这个数最后两层的节点数量
用c1+c2 = n 的形式给出
建树深度搜索即可
#include<iostream> #include<cstdio> #include<algorithm> #include<string> using namespace std; struct node{ int l,r,x; }n[2010]; int tag,root=1,step,c1,c2; int insert(int rt,int val,int st){ step = max(step,st); if(rt!=1111){ if(val<=n[rt].x)n[rt].l = insert(n[rt].l,val,st+1); else n[rt].r = insert(n[rt].r,val,st+1); return rt;//******if empty here! } else{ tag++; n[tag].x = val; n[tag].l = n[tag].r = 1111; return tag; } } void dfs(int rt,int st){ if(rt!=1111){ if(n[rt].l!=1111)dfs(n[rt].l,st+1); if(st==step)c1++; else if(st==step-1)c2++; if(n[rt].r!=1111)dfs(n[rt].r,st+1); } } int main() { int N; cin>>N; root = 1111; for(int i=1;i<=N;i++){ int val; cin>>val; root = insert(root,val,1); } dfs(root,1); cout<<c1<<" + "<<c2<<" = "<<c1+c2<<endl; return 0; }