【1】2009-2026年考研计算机408统考真题试卷+答案解析合集.pdf
【2】计算机408统考答题卡.pdf
![]() | ![]() |
408真题下载
链接:https://pan.quark.cn/s/2bfd04418923
复制以上链接打开「夸克」APP,即可下载

![]() | ![]() |
假定二叉搜索树使用二叉链表存储,其存储结构定义如下:
typedef struct BSTNode { int data; struct BSTNode *left, *right;} BSTNode;typedef BSTNode BTNode;给定一棵二叉搜索树 T 和一个整数 K,要求查找树中所有关键字与 K 之差的绝对值最小的结点,并输出该最小绝对值以及这些结点中的关键字。
要求: (1)给出算法的基本思想。(4 分)
(2)使用 C/C++ 语言描述算法。(8 分)
算法的基本思想:
二叉搜索树(BST)具有左子树所有结点值 < 根 < 右子树所有结点值的性质。因此,我们可以利用BST的有序性,通过一次中序遍历(或类似有序遍历)找到与 K 最接近的结点。
基本思路如下:
采用中序遍历的方式访问所有结点,得到关键字的有序序列。 在遍历过程中,实时记录当前结点与 K 的差的绝对值 |data - K|,并维护一个最小差值 min_diff(初始为极大值)和对应的关键字列表。 每访问一个结点,计算当前差值: 若当前差值 < min_diff,则更新 min_diff,并清空之前记录的结点列表,只保存当前结点关键字。 若当前差值 == min_diff,则将当前结点关键字加入列表。 遍历结束后,min_diff 即为最小绝对差值,列表中保存所有满足条件的结点关键字。 输出:最小绝对值 min_diff 及对应的所有关键字(可按升序输出)。
时间复杂度:O(n),空间复杂度:O(n)(最坏情况下所有结点差值相等)。
文章来源:
四季读书网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至23467321@qq.com举报,一经查实,本站将立刻删除;如已特别标注为本站原创文章的,转载时请以链接形式注明文章出处,谢谢!



