【数据结构】树的基本性质(计算树的总结点数与叶结点数)

news2024/11/24 3:58:07

树的基本性质

  • ⭐️计算树的总结点与叶结点数
    • 💫性质1
    • 💫性质2
    • 💫例题1
    • 💫例题2

⭐️计算树的总结点与叶结点数

💫性质1

性质1 树中的结点数等于所有结点的度数之和加1

例如上面这棵树,A的孩子为B、C、D,A的度数为3;B的孩子为E、F,B的度数为2;C的孩子为G,C的度数为1;D的孩子为H、I,D的度数为2…
结点数=A的度数+B的度数+C的度数+D的度数+…+J的度数+K的度数+L的度数+M的度数+1
=(B+C+D)+(E+F)+G+(H+I)+…+0+0+0+0+1
也就是结点数等于每个结点的孩子树之和(度之和)再加1,这个1就是根节点。

总结点数:n=13;
树的度:m=3;
n0(度为0的结点数)=7;
n1(度为1的结点数)=2;
n2(度为2的结点数) =2;
n3(度为3的结点数)=2;
n = 7 ∗ 0 + 2 ∗ 1 + 2 ∗ 2 + 2 ∗ 3 + 1 n=7*0+2*1+2*2+2*3+1 n=70+21+22+23+1

💫性质2

性质2 结点表示个数:n为总结点个数, n i {n_i} ni为度为i(0≤i≤m)的结点个数,则 n = n 0 + n 1 + . . . + n m {n=n_0+n_1+...+n_m} n=n0+n1+...+nm

对于上面这棵树

总结点树 n=13;
这树的度数m=3;
n 0 {n_0} n0=7;
n 1 {n_1} n1=2;
n 2 {n_2} n2=2;
n 3 {n_3} n3=2;
n = n 0 + n 1 + n 2 + n 3 n={n_0+n_1+n_2+n_3} n=n0+n1+n2+n3

对于上面两种计算树的结点的方法,我认为一个是从一个结点本身出发,计算它自己本身;另一种是从它的孩子出发,计算之和 ,但由于这样树的根节点没有被纪录,所以不要忘了加1。

💫例题1

一颗树度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶子结点个数为()
A.41 B.82 C.113 D.122
分析:

从两种角度出发:
从结点自身:
总结点 n = 20 + 10 + 1 + 10 + n 0 n=20+10+1+10+n_0 n=20+10+1+10+n0
从结点的孩子:
总结点 n = 20 ∗ 4 + 10 ∗ 3 + 1 ∗ 2 + 10 ∗ 1 + 1 n=20*4+10*3+1*2+10*1+1 n=204+103+12+101+1
联立上面两式,可以解得 n 0 = 82 n_0=82 n0=82

💫例题2

已知一棵树度为m的树中有 n 1 n_1 n1个度为1的结点, n 2 n_2 n2个度为2的结点,…, n m n_m nm个度为m的结点,问该树中有多少个叶子结点?

设总结点n
n = n 1 + n 2 + . . . + n m + n 0 n=n_1+n_2+...+n_m+n_0 n=n1+n2+...+nm+n0
n = 1 ∗ n 1 + 2 ∗ n 2 + 3 ∗ n 3 + . . . + m ∗ n m + 1 n=1*n_1+2*n_2+3*n3+...+m*n_m+1 n=1n1+2n2+3n3+...+mnm+1
联立解得, n 0 = n 2 + 2 n 3 + 3 n 4 + . . . + ( m − 1 ) n m + 1 n_0=n_2+2n_3+3n_4+...+(m-1)n_m+1 n0=n2+2n3+3n4+...+(m1)nm+1

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

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

相关文章

如何在苹果iOS系统ipa应用中获取当前版本号和Bundle ID

在iOS应用开发过程中,了解如何获取和使用应用的当前版本号、Bundle ID和其他相关信息是至关重要的。无论是在应用内显示这些信息,还是在编写一些版本依赖的逻辑时,掌握这些知识点都将帮助开发者进行更有效的管理和维护。本文将详细介绍如何在…

Java程序设计实验5 | Java API应用

*本文是博主对Java各种实验的再整理与详解,除了代码部分和解析部分,一些题目还增加了拓展部分(⭐)。拓展部分不是实验报告中原有的内容,而是博主本人自己的补充,以方便大家额外学习、参考。 (解…

【Java 进阶篇】Java Web 开发之 Listener 篇:ServletContextListener 使用详解

欢迎大家来到 Java Web 开发的学习之旅!在前面的博客中,我们已经学习了 Servlet、JSP、Filter 等重要的概念和技术。今天,我们将深入探讨 Java Web 开发中另一个重要的组成部分——Listener(监听器),具体来…

18 CDN详解

1、理解CDN 1.CDN 和电商系统的分布式仓储系统一样,就近发货给客户(客户端),所以,必然是提前在仓库中存储了某些商品. 2.CDN最擅长的是缓存静态数据,比如电商系统的热点静态页面,秒杀场景的页面等.问题:向…

Linux学习第37天:Linux I2C 驱动实验(一):哥俩好

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 世界上的很多事物都是成双成对出现的。也包括在驱动开发的过程中,比如I2C中其实就是数据线和时钟线的相互配合才能完成的。 I2C常用于连接各种外设、…

基于SSM的网络音乐系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

【Vue】【uni-app】工单管理页面实现

用的是uni-app的uni-ui拓展组件实现的 功能是对工单进行一个展示,并对工单根据一些筛选条件进行搜索 目前是实现了除了日期之外的搜索功能,测试数据是下面这个tableData.js,都是我自己手写的,后端请求也稍微写了一些,…

Windows上基于Tesseract OCR5.0官方语言库的LSTM字库训练

系列文章目录 Tesseract OCR引擎 文章目录 系列文章目录前言一、LSTM字库训练是什么?二、使用步骤1. 环境准备1.1下载Tesseract 程序并安装1.2下载Tesseract 训练字库1.3下载工具jTessBoxEditor 2. LSTM训练2.1 将要训练的图片(jpg/tif)合并成一个文件2.2 生成box文…

DreamScene2 免费WIndows 动态桌面壁纸播放软件启动无响应失败问题解决及安装使用帮助

高阶使用预览 启动失败场景还原 1. 系统信息 2. 启动错误描述 使用壁纸过程中突然出现异常卡断,使用任务管理器停止程序后,该程序就无法正常启动,点及启动后出现 转圈(任务管理器短暂出现进程) 后就消失不见 原因分析 经过推测后可能是 强制停止后 工作临时缓存目录与启动程序…

2023.11.10联赛 T3题解

题目大意 题目思路 感性理解一下,将一个数的平方变成多个数平方的和,为了使代价最小,这些数的大小应该尽可能的平均。 我们可以将 ∣ b i − a i ∣ |b_i-a_i| ∣bi​−ai​∣放入大根堆,同时将这个数划分的次数以及多划分一段减…

IDEA的这款API调试插件爱了

前言 Idea 是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展,可以根据开发人员的需要进行定制和扩展,从而提高开发效率,今天我们就来介绍一款…

【FastCAE源码阅读7】视图方向切换按钮实现原理

在FastCAE工具栏上有视图切换按钮,如下图所示: 本文介绍如何实现。 FastCAE集成了Python解析器,当单击按钮时,中间用Python执行的,最后调用MainWindow.dll库接口实现的。 具体的Python代码在Python模块的py文件夹下的…

统一消息分发中心设计

背景 我们核心业务中订单完成时,需要完成后续的连带业务,扣件库存库存、增加积分、通知商家等。 如下图的架构: 这样设计出来导致我们的核心业务和其他业务耦合,每次新增连带业务或者去掉连带业务都需要修改核心业务。 一方面&…

linux服务-配置ntp时间服务

参考博文: 如何部署NTP服务器 NTP时间服务器安装部署文档 NTP时间服务器部署以及时间同步设置 Centos7搭建NTP服务器及客户端同步时间 参考文档: GB_T 20520-2006 信息安全技术 公钥基础设施 时间戳规范; GM_T0033-2014 时间戳接口规范&…

芯片静态电流详细测试流程,纯干货分享

在芯片的众多测试项目中芯片的功耗测试可谓重中之重,因为芯片的功耗不仅关系着芯片的整体工作性能也对芯片的工作效率有着非常重大的影响。今天纳米软件就带你了解一下芯片测试项目功耗测试中的静态电流的测试。 01、什么是芯片的静态电流? 芯片的静态电流也叫做…

基于SSM的课程管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

CSS 移动端 1px(线条/边框) 不同机型上显示粗细不同,解决办法

由于不同的手机有不同的像素密度导致的。如果移动显示屏的分辨率始终是普通屏幕的2倍&#xff0c;1px的边框在devicePixelRatio2的移动显示屏下会显示成2px&#xff0c;所以在高清瓶下看着1px总是感觉变胖了 <!DOCTYPE html> <html lang"en"> <head&g…

Git Gui的使用及ssh协议-IEDA使用git

目录 一.Git Gui的使用 二.ssh协议 2.1 什么是ssh key 2.2 配置用户名和邮箱&#xff08;如果已经配置&#xff0c;就跳过&#xff09; 2.3 生成(或删除)秘钥 ​编辑 2.4 远程仓库绑定公钥 三.IEDA使用git 3.1 idea配置Git 3.2 项目上传Git 3.3 演示 一.Git Gu…

使用Java语言实现基本RS触发器

使用Java语言实现计算机程序来模拟基本RS触发器的工作过程&#xff0c;通过本账号2023年10月17日所发布博客“使用Java语言实现数字电路模拟器”中模拟基本逻辑门组成半加器电路的方法来模拟基本触发器的组成和时间延迟。 1 基本RS触发器电路结构 基本RS触发器&#xff08;又…

【入门Flink】- 08Flink时间语义和窗口概念

Flink-Windows 是将无限数据切割成有限的“数据块”进行处理&#xff0c;这就是所谓的“窗口”&#xff08;Window&#xff09;。 注意&#xff1a;Flink 中窗口并不是静态准备好的&#xff0c;而是动态创建——当有落在这个窗口区间范围的数据达到时&#xff0c;才创建对应的窗…