数据结构题目

1.数组存储

2.树

完全二叉树的最后一个结点的编号一定是1001,则它的父结点的编号为1001/2=500,则叶子结点个数为1001-500=501.

总结一下:完全二叉树的最后一个结点的编号是n,则它的父结点的编号为[n/2],则叶子结点个数为n-[n/2]。

哈夫曼树的性质是:

  • 每个非叶子结点都有两个孩子结点。
  • 哈夫曼树的叶子结点个数比非叶子结点个数多一个。

设哈夫曼树中有 n 个非叶子结点,则有 n+1 个叶子结点。

根据题意,总共有 199 个结点,所以:

n + (n + 1) = 199

解得 n = 99

因此,该哈夫曼树中有 n + 1 = 99 + 1 = 100 个叶子结点。

在二叉中序线索树(Threaded Binary Tree)中,每个节点除了左、右孩子指针外,还多了两个线索(Thread),分别指向其在中序遍历中的前驱和后继。题目中给出了以下条件:

  1. 节点 X 是一个有左孩子的节点。
  2. 节点 X 不是根节点。

要找到节点 X 的前驱,需要结合这些条件来分析。我们分几种情况讨论:

  1. X 有左孩子: 如果 X 有左孩子,那么 X 的前驱是其左子树中最右的节点。因为在中序遍历中,访问节点 X 之前会先访问它的左子树的最右节点。

  2. X 没有左孩子,但有前驱线索指向前驱: 在这种情况下,直接通过线索找到 X 的前驱。

综合题目条件,节点 X 有左孩子且不是根节点。于是我们需要找到其左子树中最右的节点。

具体步骤如下:

  1. 从节点 X 出发,找到 X 的左孩子 L。
  2. 然后不断沿着 L 的右孩子指针向下移动,直到找到最右的节点(记作 P)。
  3. 节点 P 即为 X 的前驱。

3.图

假设至少有N个顶点。由于是非连通图,并且要满足28条边,所以N=边为28的完全图(顶点最少)的顶点数+1(与完全图不连通)。

完全图边数=28,解n(n-1)/2=28,得n=8,因此N=8+1=9.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值