pat 1115 Counting Nodes in a BST (30)
来源:互联网 发布:单片机软件工程师具备 编辑:程序博客网 时间:2024/05/18 16:18
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:
- The left subtree of a node contains only nodes with keys less than or equal to the node's key.
- The right subtree of a node contains only nodes with keys greater than the node's key.
- Both the left and right subtrees must also be binary search trees.
Insert a sequence of numbers into an initially empty binary search tree. Then you are supposed to count the total number of nodes in the lowest 2 levels of the resulting tree.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (<=1000) which is the size of the input sequence. Then given in the next line are the N integers in [-1000 1000] which are supposed to be inserted into an initially empty binary search tree.
Output Specification:
For each case, print in one line the numbers of nodes in the lowest 2 levels of the resulting tree in the format:
n1 + n2 = n
where n1 is the number of nodes in the lowest level, n2 is that of the level above, and n is the sum.
Sample Input:925 30 42 16 20 20 35 -5 28Sample Output:
2 + 4 = 6
建立二叉搜索树,求最后两层的结点数目。
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;#include<vector>#include<map>#include<algorithm>#include<queue>#define MS(a,b) memset(a,b,sizeof(a))int ans[3000],mm;typedef struct node{ int data; node *left,*right;}*Tree;Tree T;void insert1(Tree &T,int num){ if(T==NULL) { T=new node(); T->data=num; T->left=NULL; T->right=NULL; return ; } if(num<=T->data)insert1(T->left,num); else insert1(T->right,num);}void dfs(Tree T,int depth){ if(T==NULL)return ; ans[depth]++; mm=max(mm,depth); dfs(T->left,depth+1); dfs(T->right,depth+1);}int main(){ /*#ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif*/ int n,num[3000],i; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&num[i]); insert1(T,num[i]); } MS(ans,0);mm=-1; dfs(T,0); printf("%d + %d = %d\n",ans[mm],ans[mm-1],ans[mm]+ans[mm-1]); return 0;}
- PAT 1115 Counting Nodes in a BST
- pat 1115 Counting Nodes in a BST (30)
- PAT 1115 Counting Nodes in a BST (30)
- PAT A 1115. Counting Nodes in a BST (30)
- PAT--1115. Counting Nodes in a BST
- 【PAT】1115. Counting Nodes in a BST
- solution Of Pat 1115. Counting Nodes in a BST (30)
- PAT 1115. Counting Nodes in a BST (30)
- pat 1115. Counting Nodes in a BST (30)
- 1115. Counting Nodes in a BST (30) PAT 甲级
- PAT A1115. Counting Nodes in a BST (30)
- PAT A1115 Counting Nodes in a BST (30)
- 【PAT】【Advanced Level】1115. Counting Nodes in a BST (30)
- PAT 1115. Counting Nodes in a BST (30) 建树
- PAT 甲级 1115. Counting Nodes in a BST (30)
- PAT (Advanced Level) Practise 1115 Counting Nodes in a BST (30)
- PAT (Advanced Level) Practise 1115 Counting Nodes in a BST (30)
- A1115. Counting Nodes in a BST (30)
- Kruskal最小生成树算法
- hdu1680 Cheesy Chess--BFS & 三维标记数组的探讨(待改进)
- CodeForces 15D Map (RMQ)
- Kefa and Company
- fzu 2144 Shooting Game 区间覆盖贪心
- pat 1115 Counting Nodes in a BST (30)
- Android studio乱码O
- dtd 文件解析
- solr学习笔记-导入mysql数据
- linux源码编写入门gcc
- hadoop大数据与hadoop云计算
- 堆排序
- 人见人爱A+B hd 2033
- Ubuntu 内存泄漏检测工具Valgrind的安装