SP3544 BST - Binary Search Tree
题目描述
众所周知,二叉搜索树是一棵树,其中每个节点最多具有两个子节点(左子节点和右子节点)。
二叉搜索树的每个节点都有一个权值。对于每个节点如果存在一个权值$X$,则其左子树中的权值小于$X$,右子树中的权值大于$X$.
现在给你一个$1$~$N$(包括$N$)之间的整数序列,其中保证每个数字在序列中只出现一次。
请你将序列建成一颗二叉搜索树,我们规定将第一个数字的值存在根节点中,并按给定的序列顺序插入其他数字。
换句话说,你需要对每个插入的数字运行函数$insert(X$,$root)$:
该函数伪代码如下:
插入(编号X,节点N)
将计数器C增加1
if X小于节点N中的权值
if N没有左子节点
创建一个权值为X的新节点,并将其设置为节点N的左子节点
else insert(X,节点N的左子节点)
else if (X大于节点N中的权值)
if N没有右子节点
创建一个权值为X的新节点,并将其设置为节点N的右子节点
else insert(X,节点N的右子节点)
请你编写一个程序,计算在依次插入每个数字后计数器$C$的值并输出。计数器$C$最初为$0$。
输入格式
第一行包含一个正整数$N(1
输出格式
一共$N$行,每行一个数字,表示按给定序列顺序插入每个数字之后计数器$C$的值
感谢@___new2zy___ 提供的翻译