【数据结构与算法】树和二叉树课后习题

news2024/11/22 15:11:44

题目

题目1

知一棵树边的集合为
< I , M > , < I , N > , < E , I > , < B , E > , < B , D > , < A , B > , < G , J > , < G , K > , < C , G > , < C , F > , < H , L > , < C , H > , < A , C > {<I,M>,<I,N>,<E,I>,<B,E>,<B,D>,<A,B>,<G,J>, <G,K>,<C,G>,<C,F>,<H,L>,<C,H>,<A,C>} <I,M>,<I,N>,<E,I>,<B,E>,<B,D>,<A,B>,<G,J>,<G,K>,<C,G>,<C,F>,<H,L>,<C,H>,<A,C>
请画出这棵树并回答下列问题:

  1. 哪个是根结点?
  2. 哪些是叶子结点?
  3. 哪个是结点G的双亲?
  4. 哪些是结点G的祖先?
  5. 哪些是结点G的孩子?
  6. 哪些是结点E的子孙?
  7. 哪些是结点E的兄弟?哪些是结点F的兄弟?
  8. 结点B和N的层次号分别是什么?
  9. 树的深度是多少?
  10. 以结点C为根的子树的深度是多少?

该树形状

在这里插入图片描述

题目1答案

(1) 根结点:A
(2) 叶子节点:M、N、J、K
(3) 结点G的双亲:C
(4) 结点G的祖先:A、C
(5) 节点G的孩子:J、K
(6) 节点E的子孙:I、M、N
(7) 节点E的兄弟:D;节点F的兄弟:H、G
(8) 结点B和N的层次号分别是:2、5
(9) 树的深度:5
(10) 以结点C为根的子树的深度:2


题目2

一棵度为2的树与一棵二叉树有何区别?


题目2答案

  • 结构方面:一棵度为2的树的结点之间没有严格的父子关系,但二叉树中每个结点都有明确的父结点和左右结点。
  • 遍历方式:二叉树常用前序、中序、后序遍历,而度为2的树可以用更特殊的遍历方式来遍历,如:从根结点开始,先遍历左子结点、再遍历右子结点、最后递归遍历子树。

题目3

已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,…,nk个度为k的结点,问该树中有多少个叶子结点?


题目3答案

度之和: n − 1 ① 度之和:n-1 ① 度之和:n1①
度之和: n 1 + n 2 ∗ 2 + n 3 ∗ 3.. + n m ∗ m ② 度之和:n1+n2*2+n3*3 ..+ nm*m ② 度之和:n1+n22+n33..+nmm
联立解得: n 0 = n 2 + . . . + ( k − 1 ) ∗ n k + 1 联立解得:n0=n2+...+(k-1)*nk+1 联立解得:n0=n2+...+(k1)nk+1


题目4

已知一棵含有n个结点的树中,只有度为k的分支结点和度为0的叶子结点,求该树含有的叶子结点的数目


题目4答案

设叶子结点为 x 个,度为 k 的分支结点为 n − x 个 设叶子结点为x个,度为k的分支结点为n-x个 设叶子结点为x个,度为k的分支结点为nx
在这里插入图片描述
故一共有 1 + ( n − k ) ∗ k 1+(n-k)*k 1+(nk)k个结点(其中1为最顶上的结点也就是根结点)
解: x = n − ( n − 1 ) / k 解: x= n-(n-1)/k 解:x=n(n1)/k


题目5

证明:一棵满k叉树上的叶子结点数n0和非叶子结点数n1之间满足下列关系: n 0 = ( k − 1 ) n 1 + 1 n_0=(k-1)n_1+1 n0=k1n1+1


题目5答案

由于是满k叉树,故只有叶子结点和度为k的非叶子结点,假设一共有n + 1层
n 1 = ( 1 − k n ) / ( 1 − k ) n_1=(1-k^n)/(1-k) n1=(1kn)/(1k)
n 0 = k n n_0=k^n n0=kn
故得证
n 0 = ( k − 1 ) n 1 + 1 n_0=(k-1)n1+1 n0=k1n1+1


结束语

  因为是算法小菜,所以提供的方法和思路可能不是很好,请多多包涵~如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?我们之间的交流是我最大的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/722020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

财务凭证替代退出类型不正确几个问题汇总

财务凭证替代退出类型不正确几个问题汇总 以上资料均来自网络&#xff0c;纯粹个人工作记录&#xff0c;如有意见请联系删除。 1、两种类型含义 c_exit_param_class. 传参数 代表完全凭证替代 c_exit_param_none. 不传参数 代表行项目替代 exits-name ‘ZFI27’. " …

wpf中DialogResult.Yes方法报错

原因&#xff1a;在WPF里DialogResult没有Yes或No的枚举取值了 所以应该这样写 private void Button_Click(object sender, RoutedEventArgs e) {   if (MessageBox.Show ("要退出程序吗?", "退出程序",MessageBoxButton.YesNo ) MessageBoxResult.Y…

MySQL数据库概述

文章目录 SQL语言的特点SQL的组成部分数据库基本概念数据库性质数据库系统数据库系统的组成部分数据库发展简史 SQL语言的特点 &#xff08;1&#xff09;功能一体化 &#xff08;2&#xff09;高度非过程化 &#xff08;3&#xff09;面向集合的操作方式 &#xff08;4&am…

企业利用bi商业智能工具有哪些改变呢?以瓴羊QuickBI为例

当下的趋势是数字化已经成为一股不可抗拒的力量&#xff0c;推动着全球各国社会经济的发展。在数字经济中&#xff0c;数据是核心基础&#xff0c;包括数据的收集、整合、分析和应用等各个方面。为了充分挖掘数据的价值&#xff0c;各种相关技术近年来得到了迅猛发展。在这些技…

MFC管理系统

文章目录 登录设置登录界面登录用户判断 界面设计嵌入对话框 添加列表添加员工添加按钮 完成添加员工删除员工修改员工信息修改 完成修改员工保存数据打开时显示读取内容全部代码 登录 设置登录界面 初始化窗口实列 添加控件变量 登录用户判断 void CLoginDlg::OnBnClickedB…

C语言程序环境和预处理

本章主要以图片和文字的形式给大家讲解 程序的翻译环境和程序的执行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境&#xff0c;它用于实际执行代码 2. 详解编译…

visio常用功能

1.常规对象&#xff0c;鼠标左键操作进行旋转、下图旋转柄是鼠标左键拖动可以任意改变方向&#xff0c;改变大小&#xff08;长度、宽度、等比例&#xff09;。 2.注意&#xff1a;用大小和位置定量改变形状的大小和角度 在选中形状对象后&#xff0c;页面底部会出现该形状的大…

【Spring Boot】Spring Boot日志详情:基于lombok的日志输出

文章目录 1. 何为日志文件&#xff1f;2. 日志文件的作用3. 日志文件的基本使用3.1 Spring Boot中的日志3.2 自定义日志打印 4 日志级别4.1 日志级别的作用4.2 日志级别的分类4.3 日志级别的设置 5 日志持久化6 基于lombok的日志输出6.1 lombok 简单输出日志案例6.2 浅谈 lombo…

如果遇到洪灾导致网络瘫痪,对讲机能起到什么作用?

当我们遇到洪灾这种突发事件时&#xff0c;网络基本就会处于瘫痪状态&#xff0c;人们的安全和生命也将面临着极大的威胁。而在这种时候&#xff0c;一种看似普通的通讯工具&#xff0c;却能够成为拯救生命的关键&#xff0c;它就是——对讲机&#xff01; 网络已经成为我们生…

使用3D Slicer进行图像配准

在3D Slicer官网上&#xff08;https://www.slicer.org/&#xff09;下载最新版本的软件 下载完成后按照指示安装软件&#xff0c;并在安装目录下打开软件 打开后在插件市场搜索并安装需要的配准插件 安装完成后重新打开软件&#xff0c;进行图像配准操作&#xff0c;首先需…

FreeRTOS ~(四)同步互斥与通信 ~ (1/3)同步的缺陷

举例子说明&#xff1a;同步的缺陷 首先创建两个任务&#xff1a;Task1和Task2; 让Task1执行一个比较耗时的计算,计算完成之后,通知Task2; Task1&#xff1a;求和,sum,累加10000000次,然后标志位置1 Task2&#xff1a;检测到标志位置1,打印sum值 为了可以在逻辑分析仪上更准确…

Kibana的对索引库的操作(2)

使用Kibana对文档操作 1.新增文档 新增文档并随机生成id: POST /索引库名/类型名{"key","value"} 新增文档并自定义id:POST /索引库名/类型名/id值 {"key","value"} 2.查看文档 如果查询的文档不存在则返回false 3.修改文档 这里需…

【Telephony】SIM单卡到双卡的变化

1、注册观察者 --> PhoneFactory.makeDefaultPhones() --> TelephonyComponentFactory.makeSubscriptionInfoUpdater() --> new SubscriptionInfoUpdater() --> PhoneConfigurationManager.registerForMultiSimConfigChange(this, EVENT_MULTI_SIM_CONFIG_CHAN…

linux下载安装jdk

1、一般linux系统会自带jdk&#xff0c;执行搜索命令&#xff0c;会查询到不同版本jdk。 2、执行yum install java-1.8.0-openjdk 命令下载对应版本jdk 3、java -version 验证

charles 如何获取电脑端微信小程序接口

安装证书 设置代理端口 即可抓取美团酒店小程序的数据 从charles 可以抓取出header 请求&#xff0c;没有所谓的通过遍历循环能简单的得到数据&#xff0c;请求包含加密信息 随便改下数据就是 所以如果要得到这些数据&#xff0c;还非得通过小程序模拟人滑动获取数据&…

Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询

目录 一、 连接查询 对多个表进行查询 1.0 数据准备 1.1 连接查询 1.2 内连接 INNER JOIN 1.3 左连接 LEFT JOIN 1.4 右连接 RIGHT JOIN 1.5 FULL OUTER JOIN 1.6 自连接查询 1.7 子查询-嵌套在查询中 一、 连接查询 对多个表进行查询 1.0 数据准备 在之前的文章当中…

20-Linux 上搭建 Java Web 环境

目录 1.搭建 JDK 运行环境 ①查看所有的 Java 安装包&#xff1a; ②安装&#xff08;安装 Java 1.8 相关的软件包&#xff09;&#xff1a; PS&#xff1a;卸载使用 ③验证是否安装成功&#xff1a; 2.安装并运行 Tomcat ①去官网下载Tomcat压缩包至本地&#xff0c;再…

4.Nginx缓存设置和CDN

文章目录 Nginx缓存设置设置缓存取消不需要内容的缓存查看nginx缓存数据 CDN概念工作原理 Nginx缓存设置 设置缓存 ##在yum配置文件中添加nginx在线源vim /etc/yum.repos.d/nginx.repo[nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/7/$base…

28-大文件上传(了解)

一、是什么&#xff1f; &#x1f697;&#x1f697;&#x1f697;不管怎样简单的需求&#xff0c;在量级达到一定层次时&#xff0c;都会变得异常复杂。 文件上传简单&#xff0c;文件变大就复杂 上传时&#xff0c;以下几个注意点会影响用户体验 服务器处理数据的能力请求超…

AI PPT 一句话搞定PPT讲演搞

相信大家在职场中&#xff0c;一定会接触过写PPT&#xff0c;经常会把你搞得焦头烂额。在大部分的公司里&#xff0c;写PPT汇报又是不可能逃避的事情。但随着AI时代的到来&#xff0c;有很多AI帮你写PPT的工具也逐渐崭露头角&#xff0c;可以自动帮助你制作出华丽的PPT&#xf…