#include<cstdio> #include<vector> #include<queue> using namespace std; struct Node{ int data; Node *lchild,*rchild; }; // 进行二叉树的建立 void insertData(Node* &root,int data){ if(root==NULL){ root=new Node; root->data=data; root->lchild=root->rchild=NULL; return; } else if(data>root->data){ insertData(root->rchild,data); } else insertData(root->lchild,data); } vector<int> num(1000); int maxdepth=-1; // 进行深度优先遍历二叉树 void dfs(Node *root,int depth){ if(root==NULL){ maxdepth=max(depth,maxdepth); return; } num[depth]++; dfs(root->lchild,depth+1); dfs(root->rchild,depth+1); } int main(){ Node* root=NULL; int n,data; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&data); insertData(root,data); } dfs(root,0); printf("%d + %d = %d",num[maxdepth-1],num[maxdepth-2],num[maxdepth-1]+num[maxdepth-2]); return 0; }
甲级pat-1115
猜你喜欢
转载自blog.csdn.net/qq_36926514/article/details/80273436
今日推荐
周排行