您的位置:首页 > Web前端 > Node.js

1115. Counting Nodes in a BST (30)(建立二叉搜索树)

2017-11-07 19:28 567 查看
Counting Nodes in a BST (30)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

16000 B

判题程序

Standard

作者

CHEN, Yue

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:

9

25 30 42 16 20 20 35 -5 28

Sample Output:

2 + 4 = 6

找出一个二叉搜索树的倒数第一层的节点数,和倒数第二层的节点数

#include<iostream>
#include<cstdio>
using namespace std;
int lev[2000];
int maxlev=1;
int n;
struct tree{
int key;
struct tree *left,*right;};
struct tree * creat (struct tree *now ,int num,int level)
{
if (now==NULL)
{
now =new struct tree();
now->key=num;
now->left=NULL;
now->right=NULL;
lev[level]++;
maxlev=max(maxlev,level);
}
else
{
if (num<=now->key)
{
now->left=creat(now->left,num,level+1);
}
else
{
now->right=creat(now->right,num,level+1);
}
}
return now;
}
int main()
{
cin>>n;
struct tree *first=NULL;
int num;
for (int i=0;i<n;i++)
{
cin>>num;
first= creat(first,num,1);
}
printf("%d + %d = %d",lev[maxlev],lev[maxlev-1],lev[maxlev]+lev[maxlev-1]);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: