相信大家对二叉查找树都很熟悉了,现在给你 N 个整数的序列,每个整数都在区间[1,N]内, 且不重复。现在要你按照给定序列的顺序,建立一个二叉查找树,把第一个整数作为根,然 后依次插入后面的整数。 每个结点X的插入过程其实就是模拟下面的 insert(X, root)过程:
insert( number X, node N )
{
increase the counter C by 1 //每次进来都会使C加1
if X is less than the number in node N //如果X小于结点N的值
{ if N has no left child //N没有左孩子
create a new node with the number X and set it to be the left child of node N //新建一个节点, 把X作为N左孩子
else insert(X, left child of node N)//递归插入到N左子树
}
else (X is greater than the number in node N) //如果X大于结点N的值
{
if N has no right child //N没有右孩子
create a new node with the number X and set it to be the right child of node N//新建一个节点, 把X作为N右孩子
else insert(X, right child of node N) //递归插入到N右子树
}
}
你的任务是:每次把序列的一个整数插入到二叉查找数后,到目前为止计数累加器C的 值是多少?请把它输出。注意:第一次插入根,计数器C的值是0,你可以理解为插入根是 不执行insert()操作的,其后每插入一个结点,C都累加,也就是每次进入过程insert( number X, node N ),都会执行increase the counter C by 1,使得C不断增大