首页 > 益智题库
题目内容 (请给出正确答案)
[主观题]

编写一个递归算法,在一棵有n个结点的随机建立起来的二叉搜索树上搜索第k(1≤k≤n)小的元素,并返

编写一个递归算法,在一棵有n个结点的随机建立起来的二叉搜索树上搜索第k(1≤k≤n)小的元素,并返

回指向该结点的指针。要求算法的平均时间复杂度为O(log2n)。二叉搜索树的每个结点中除data、ieftChild、rightChild等数据成员外、增加一个count成员,保存以该结点为根的子树上的结点个数。

查看答案
答案
收藏
如果结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能还需要:
您的账号:
发送账号密码至手机
发送
安装优题宝APP,拍照搜题省时又省心!
更多“编写一个递归算法,在一棵有n个结点的随机建立起来的二叉搜索树…”相关的问题
第1题
设一棵二叉树采用二叉链表表示,编写一个算法,计算二叉树各层结点个数。

点击查看答案
第2题
设一棵二叉树采用二义链表表示,编写一个算法:求二叉树的所有叶结点的值及其所在层次。

点击查看答案
第3题
设一棵二叉树采用二叉链表表示,编写一个算法,利用二叉树的后序遍历判该二叉树是否平衡。本题中“平衡”是指二叉树中任一结点的左、右子树高度的差的绝对值不超过1。

点击查看答案
第4题
设一棵二叉树采用二叉链表表示,编写一个算法利用二叉树的前序遍历求前序序列的第k个点。

点击查看答案
第5题
设一棵二叉树的存储表示是二叉链表,编写一个用逆转链方法实现二叉树前序遍历的算法。这个方法
的思想是在遍历过程中沿着结点的左子女或右子女方向“下降”时,临时改变其leftChild或rightChild的值,使之指向该结点的父结点,从商为以后的“上升”提供路径;在上升的过程中将结点的leftChild或rightChild的值恢复原来的值。为了在上升的过程中区分是从该结点的左子树上升的还是从右子树上升的,在结点中设置一个tag标志。进人算法时,所有结点的tag设为0,当遍历过程中进入结点的左子树时,将该结点的tag置为l、从左子树退出进人右子树时再将该结点的tag置为0.

点击查看答案
第6题
设一棵二义树的存储表示是二叉链表、编写一个用Robson方法实现二叉树后序遍历的算法。Robson方
法遍历二叉树的特点如下:

(1)沿袭5-60题使用逆转链遍历二叉树的思想。

(2)不使用tag标志,而是用内嵌的栈代替tag的作用。该内嵌的栈使用了叶结点作为栈的结构,没有另外定义栈的存储空间。

(3)利用栈解决在回溯时分辨究竟是从左子树还是右子树上升的问题,步骤是:

①当进入有非空左子树的结点的右子树时,将该结点的地址进栈。

②在回溯过程中如遇到结点的左、布子树都非空时,如果该结点就是存于栈顶的结点,则可判定当前是从该结点的右子树退回,该结点的右子女指针指向它的父结点;否则当前是从该结点的左子树退回,该结点的左子女指向它的父结点。

点击查看答案
第7题
设二叉树共含n个节点,且各节点数据项的类型支持大小比较(类似于整数或浮点数)。试设计并实现一个递归算法,在o(n)时间内将每个节点的数值替换为其后代中的最大数值。

点击查看答案
第8题
设单链表中结点的结构为:在一个具有n个结点的单链表中插人一个新结点,并可以不保持原有顺序的

设单链表中结点的结构为:

在一个具有n个结点的单链表中插人一个新结点,并可以不保持原有顺序的算法的时间复杂度是().

A、O(1)

B、O(n)

C、O(n2)

D、O(nlog2n)

点击查看答案
第9题
设一棵高度为h的满二叉树有n个结点,其中有m个叶结点,则()。
设一棵高度为h的满二叉树有n个结点,其中有m个叶结点,则()。

A、n=h+m

B、h+m=2n

C、m=h-1

D、n=2h-1

点击查看答案
第10题
设计一个名为SequenceTest的类,在其中编写一个static方法用于计算一个整数序列前n个整数的平均
值,方法签名如下:

在main()方法中编写代码通过RandomIntSequence的方法获得前10个随机整数,并计算它们的平均值。

点击查看答案
第11题
设二叉树共含n个节点,且各节点数据项的类型支持线性累加(类似于整数或浮点数),试设计并实现一个递归算法,按照如下规则,在o(n)时间内为每个节点设适当的数值:树根为0;对于数值为k的节点,其左孩子数值为2k+1,右孩子为2k+2。

点击查看答案
退出 登录/注册
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改