博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1115 Counting Nodes in a BST (30 分)建立二叉搜索树,求每层结点数目
阅读量:4681 次
发布时间:2019-06-09

本文共 2162 字,大约阅读时间需要 7 分钟。

1115 Counting Nodes in a BST (30 分)

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 [10001000] 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 28

Sample Output:

2 + 4 = 6 思路:   通过先序遍历建立二叉树,然后使用先序遍历求每层结点数。
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;struct Node{ int data; Node *lchild,*rchild;};void insertBST(Node *&root,int key){ if(root==nullptr) { root=new Node; root->data=key; root->lchild=root->rchild=nullptr; return; } if(key>root->data) insertBST(root->rchild,key); else insertBST(root->lchild,key);}int level[1001];int maxLevel=0;void dfs(int depth,Node *root){ if(root==nullptr) return; level[depth]++; maxLevel=max(depth,maxLevel); dfs(depth+1,root->lchild); dfs(depth+1,root->rchild);}int main(){ int n; cin>>n; //int a[n+1]; Node *root=nullptr; for(int i=0;i
>temp; insertBST(root,temp); } dfs(1,root);// for(int i=1;i<=maxLevel;i++)// cout<
<<" ";// cout<

 

 

转载于:https://www.cnblogs.com/zhanghaijie/p/10308812.html

你可能感兴趣的文章
P3698 [CQOI2017]小Q的棋盘
查看>>
动态规划入门 洛谷P2409 Y的积木
查看>>
【第一季】CH04_FPGA设计Verilog基础(一)Enter a post title
查看>>
Mysql全文索引
查看>>
[LeetCode] 148. Sort List 链表排序
查看>>
jmeter(四十四)常用性能指标分析
查看>>
6个出色的基于JQuery的Tab选项卡实例2010/01/29 16:261. jQuery 选项卡界面 / 选项卡结构菜单教程...
查看>>
F - 八苦を滅した尼公 POJ - 2763 线段树LCA
查看>>
通过jQuery源码学习javascript(一)
查看>>
源码阅读经验谈-slim,darknet,labelimg,caffe(1)
查看>>
SecureCRT配色方案
查看>>
Unity3D 关于yield在collider中的使用
查看>>
spring-mvc xml文件的最基本配置
查看>>
word 新建一行文字不能左对齐
查看>>
jquery选择器
查看>>
IT公司的等级观念
查看>>
百度编辑器ueditor1.4.3配置记录
查看>>
ubuntu12.04开启Framebuffer
查看>>
【问题和解决】python中nltk与nltk_contrib的关系
查看>>
闭包的探索
查看>>