树-王道-复试

1.度: 树中孩子节点个数,所有结点的度最大值为 树的度
2.有序树: 逻辑上看,树中结点的各子树从左至右是有次序的,不能互换
**3.**树的根节点没有前驱,其他节点只有一个前驱
**4.**所有节点可有零个或者多个后继

常考性质

1. 节点数 = 总度数(总边数)+1
2.度为 m 的树、m 叉树的区别:
在这里插入图片描述
** 3. 度为m的数第 i 层 至多有m(i-1)个结点,m叉树第i层至多有m(i-1)个节点 **
**4.高度为 h 的 m 叉树至多:**有(m^h-1)/m-1个节点
5.高度为 h 的 m 叉树至少: h个节点
6.高度为 h、度为 m 的树至少: h+m-1个节点
7.最小高度为: logmn
在这里插入图片描述
在这里插入图片描述
最小高度的计算:
在这里插入图片描述

2.完全二叉树

就是右叶子节点为缺,左边都是连起来的
在这里插入图片描述
特点:

1.只有最后两层可能有叶子结点。
2最多只有一个度为 1 的结点。(屁股节点,也就是度为1的节点只有1个)
3若按层序从 1 开始编号,结点 i 的左孩子为 2i,右孩子为 2i+1;结点 i 的父节点为 ⌊ i / 2 ⌋ \lfloor i/2\rfloor⌊i/2⌋。
4 i ≤ ⌊ n / 2 ⌋ 为分支结点,i > ⌊ n / 2 ⌋ 为叶子结点。

3.平衡二叉树与二叉搜索树的区别:

平衡:树上任一结点的左子树和右子树的深度之差不超过 1。
搜索:左小于根,右大于根
https://blog.csdn.net/weixin_57128596/article/details/127216542?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170853038416800185813532%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170853038416800185813532&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-1-127216542-null-null.nonecase&utm_term=BST&spm=1018.2226.3001.4450

4.度合节点数的区别:

1.节点总数n=n0+n1+n2(度为0的节点数+度为1的节点数+度为2的节点数)
n0=n2+1(度为0的节点数=度为2的节点数+1)
2.二叉树的第i层至多有2的i-1次方个节点
3.高度为h的二叉树至多有2的h次方-1个节点
4.如果完全二叉树有2K个节点(偶数),则n1=1,n0=k,n2=k-1
5.如果完全二叉树有2K-1个节点(奇数),则n1=0,n0=k,n2=k-1

5.二叉树的左右孩子

1:节点i的左孩子为 2i
2:节点i的右孩子为 2i+1
3:节点i的父节点为【i/2】
4:节点i的层次为 【log2(i+1)】

6.前中后序遍历

前序:
根左右
中序:
左根右
后序:
左右根

typedef struct BiNode{ElemType data;struct BiNode *lchild,*rchild;
}BiNode,*BiTree;void PreOrder(BiTree T){if(T!=NULL){visit(T);//访问根节点PreOrder(T->lChild);//递归左子树PreOrder(T->rChild);//递归右子树}
}void InOrder(BiTree T){if(T!=NULL){InOrder(T->lchild);//递归左子树visit(T);//访问当前节点InOrder(T->rchild);//递归右子树}
}void PostOrder(BiTree T){if(T!=NULL){PostOrder(T->lchild);//递归左子树PostOrder(T->lright);//递归右子树visit(T);}
}
求树的最大深度
int maxDepth(BiTree T){if(T==NULL) return 0;int lDepth=maxDepth(T->lchild);//当前节点的左子树深度int rDepth=maxDepth(T->rchild);//当前节点的右子树深度return lDepth>rDepth?lDepth+1:rDepth+1;
}
二叉树的层序遍历
//二叉树节点
typedef struct BiNode{ElemeType data;struct BiNode* lchild,*rchild;
}BiNode,*BiTree;
//链式队列节点,作层序
typedef struct LinkNode{BiNode* data;struct LinkNode* next;
}LinkNode;//层序集合,类似List<List<TreeNode>>
typedef struct{LinkNode *front,*rear;
}LinkQueue;void LevelOrder(BiTree T){LinkQueue Q; //类似List<List<TreeNode>>InitQueue(Q);BiTree p;//二叉树节点EnQueue(Q,T);//将T入到我们的队列Q中while(!IsEmpth(Q)){DeQueue(Q,p);//将队列中的队首元素出队,并将其赋值给 p,这样就可以访问当前节点 pvisit(p);//将节点的子节点入队if(p->lchild!=NULL){EnQueue(Q,p->lchild);}if(p->rchild!=NULL){EnQueue(Q,p->rchild);}}
}

7.中序前序后序的节点变换

8.树和森林题目

1.
1.:讨论二叉树高度,必须要说他是完全二叉树,高度为log2(n)+1
2.:树-一般我们阐述的是左孩子右兄弟树,左侧图,叶子节点树为1,对应二叉树-因为右兄弟,所以转为二叉树,有两个叶子节点
在这里插入图片描述

树转二叉树的规则:

左孩子右兄弟,BCD三个节点彼此就是兄弟,B是A的孩子,CD是B的兄弟,
但是有个从左到右的顺序,最左的是长兄,
**画法:**从左开始搜,平层为兄弟节点

在这里插入图片描述
森林应该保持平层;注重左右带来的关系
在这里插入图片描述

树和森林和二叉树的遍历关系:

森林和二叉树是一种遍历关系
在这里插入图片描述

9.题目

1.
在这里插入图片描述
2.
节点数=所有节点度数之和+1;
在这里插入图片描述
3.
最大值是高度
在这里插入图片描述
4.
1.节点数=至多高度+度-1
2. 度为n,第i层至多有n的i-1次方
在这里插入图片描述
5.
在这里插入图片描述
度为4,高度为h,至少节点数=h+4-1
度为4,高度为h,最多节点数:(4^h-1)/(度-1)

6
logm(n(m-1)+1)
在这里插入图片描述
7.

n节点总数=对应度数对应的节点个数+…
n0=n-n1-n2-n3-n4…
n节点总数=叶子节点个数n0+其余度数节点的累加
在这里插入图片描述
8.
1.完全二叉树的高度为:(log2n)+1,n为节点个数**(注意一定要是完全二叉树)**
否则链式情况需要考虑,可能有4个节点高度为4
2.如果一个完全二叉树没有左孩子,那么该节点一定是叶子节点
在这里插入图片描述
9.
需要注意i是否是>0,如果i从0开始,那么第i个节点的左孩子为2
i+1,否则为2i

在这里插入图片描述

10

度为0说明该节点为叶子节点,所以在具象化的时候,我们只需要重点在度为2上,所含节点数至少为:2(h-1)+1*
高度为h,所包含节点数至少为2h-1

在这里插入图片描述
11.
最小高度,马上想到完全二叉树,完全二叉树的高度为:(log2n)+1,2为叉树,n为节点数

在这里插入图片描述

12.
公式一:节点总数2n=n0+n1+n2(各度数节点之和 )
公式二:节点总数2n=非叶子节点n1数量1+n22(度数)+1

在这里插入图片描述
13.
二叉树最大深度,每层节点数最少即可,每层最少为2,所以2*h- 1=节点数n
在这里插入图片描述

14.

完全二叉树,已知高为h,最少节点——>(log2^n)+1=h)
由于高度h满二叉树共有2^h-1个结点
高度为h-1满二叉树有2^(h-1)-1个结点
可得2^(h-1)-1 < n <=2^h-1
不等式同时+1:2h-1 < n+1 <=2h
不等式同时取对数:
h-1 < log2n+1 <= h
在这里插入图片描述
15.
计算满二叉树的节点个数:2^n-1,比如这里的五层,就是2的5次方-1
如果是计算某i层的节点个数:2^(i-1)
在这里插入图片描述

16.
方法一:必然大于n/2,所以D
方法二:1.n0=n2+1 ;2.n=n0个数+n1+n2;3.然后完全二叉树的n1不是0就是1,再往里代入,只有D满足
在这里插入图片描述

17.
完全二叉树前n层至多节点数:2^n-1——>前6层最多有 2 ^6-1
完全二叉树前n层至少节点数:2^(n-1)
满二叉树某层节点数:2^(i-1)
满二叉树所有节点数:2^n-1
在这里插入图片描述
18.
1.124个叶子节点,说明这是n0的数量
2.n0=n2+1;n2=n0-1;
3.n=n0+n1+n2——>n=2n0+n1-1
带入n0=124,n1=0/1求解

在这里插入图片描述
19.
1.空指针数量=n+1
2.结点数=度+1
在这里插入图片描述
20
判断节点所在层数的公式:[log2(n)]+1,向下取整
在这里插入图片描述
21.
m叉树拥有n个节点,最小高度为:[logm(n(m-1))]向上取整

在这里插入图片描述
21.
1.首先计算前5层,节点数为:2^5-1(相当于满二叉树)=31
2.第6层有8个叶子节点,有两种情况:倒数第一层或者倒数第二层,因为考虑最多节点数,所以为倒数第二层
第i层节点数为最大:2^(i-1)=32,所以第6层非叶子节点个数为32-8=24个,所以第7层有48个
3.总数为:31+32+48=111

在这里插入图片描述
22.
1.每个非叶子节点有2个子节点,说明n1=0,所以我们只需要关注n0和n2即可
2.n0=n2+1
3.n=2n0-1;
所以为2K-1

在这里插入图片描述
23.
答案:31,存储单元数量跟树的高度相关,比如高度为5,直接算满二叉树所需空间为:2^5-1=31
在这里插入图片描述

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

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

相关文章

电路设计(26)——速度表的multisim仿真

1.设计要求 设计一款电路&#xff0c;能够实时显示当前速度。 用输入信号模拟行驶的汽车&#xff0c;信号频率的1hz代表汽车速度的1m/s。最后速度显示&#xff0c;以km/h为单位。 2.电路设计 当输入信号频率为40HZ时&#xff0c;显示的速度应该为144KM/h&#xff0c;仿真结果为…

3D模型库免费下载有什么好处?

对于设计师来说&#xff0c;高质量的免费的3D模型库是必不可少的资源&#xff0c;能帮他们能够获取到各种类型的3D模型&#xff0c;从而提高工作效率&#xff0c;更好的完成作品。那么3D模型库免费下载对设计师有什么好处? 1.降低门槛&#xff1a;对于初学者或预算有限的设计师…

第3.5章:StarRocks数据导入——Broker Load

注&#xff1a;本篇文章阐述的是StarRocks-3.2版本的Broker Load导入机制 一、概述 Broker Load导入方式支持从HDFS类的外部存储系统&#xff08;例如&#xff1a;HDFS、阿里OSS、腾讯COS、华为云OBS等&#xff09;&#xff0c;支持Parquet、ORC、CSV、及 JSON 四种文件格式&a…

git 使用总结

文章目录 git merge 和 git rebasegit mergegit rebase总结 git merge 和 git rebase git merge git merge 最终效果说明&#xff1a; 假设有一个仓库情况如下&#xff0c;现需要进行 merge&#xff1a; merge 操作流程&#xff1a; merge 的回退操作&#xff1a; git reba…

LabVIEW高效核磁测井仪器多线程优化

LabVIEW高效核磁测井仪器多线程优化 为提高核磁测井仪器的测试效率与性能&#xff0c;开发了基于LabVIEW的多线程优化模型。该研究针对传统的核磁测井仪器软件&#xff0c;在多任务调度测试和并行技术需求上存在的效率不高和资源利用率低的问题&#xff0c;提出了一个多线程优…

Python3基础之import和from import的用法和区别

一、模块和包 1、模块 一个 python 的文件就叫做模块&#xff08;module&#xff09;&#xff0c;如 xxx.py。模块就是一组功能的集合体&#xff0c;我们的程序可以导入模块来复用模块里的功能。 2、包 一个包含有__init__.py 文件的目录或文件夹就叫做包(package)。在 pych…

【51单片机】初学者必会项目——按键控制LED流水灯模式(定时器&中断系统的应用)(10)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

盘点全网好用的ai伪原创工具

在信息内容发展的今天&#xff0c;写作在我们每个人的生活当中息息相关。可能写作对于有的人来说很简单&#xff0c;但对于有些人来说可能也会很难&#xff0c;幸运的是&#xff0c;我们在这个技术发达的今天&#xff0c;对于很多难题都是可以迎刃而解的&#xff0c;即使对于那…

nginx服务基础用法(概念、安装、热升级)

目录 一、I/O模型概述 1、I/O概念 1.1 计算机的I/O 1.2 Linux的I/O 2、零拷贝技术 3、同步/异步&#xff08;消息反馈机制&#xff09; 4、阻塞/非阻塞 5、网络I/O模型 5.1 阻塞型 I/O 模型&#xff08;blocking IO&#xff09; 5.2 非阻塞型 I/O 模型 (nonblocking …

win系统下安装mysql5.7并配置环境变量、设置root用户和服务启动的详细操作教程

本篇文章主要讲解&#xff1a;win系统下安装mysql5.7并配置环境变量、设置root用户和服务启动的详细操作教程 日期&#xff1a;2024年2月22日 作者&#xff1a;任聪聪 一、mysql5.7版本的下载 官方下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 步骤…

Spring框架@Autowired注解进行字段时,使用父类类型接收子类变量,可以注入成功吗?(@Autowired源码跟踪)

一、 前言 平常我们在使用spring框架开发项目过程中&#xff0c;会使用Autowired注解进行属性依赖注入&#xff0c;一般我们都是声明接口类型来接收接口实现变量&#xff0c;那么使用父类类型接收子类变量&#xff0c;可以注入成功吗&#xff1f;答案是肯定可以的&#xff01;…

linux下执行文件包含^M,将window文件格式内容转为linux格式

查看文件内容 cat -v jvm_options 报错信息 ./bin/install-plugin.sh: /bigdata/opt/s/seatunnelsgg/apache-seatunnel-2.3.4/mvnw: /bin/sh^M: bad interpreter: No such file or directory install connector : connector-selectdb-cloud安装工具 yum install -y dos2uni…

一文了解LM317T的引脚介绍、参数解读

LM317T是一种线性稳压器件&#xff0c;它具有稳定输出电压的特性。LM317T可以通过调整其输出电阻来确保输出电压的稳定性&#xff0c;因此被广泛应用于各种电子设备中。 LM317T引脚图介绍 LM317T共有3个引脚&#xff0c;分别是&#xff1a; 输入引脚&#xff08;输入电压V_in&…

本地配置多个git账户及ll设置

本地配置多个git账户 清除全局配置将命令行&#xff0c;切换到ssh目录生成GitLab和Gitee的公钥、私钥去对应的代码仓库添加 SSH Keys添加私钥ll设置 管理密钥验证仓库配置关于gitgitee.com: Permission denied (publickey) 清除全局配置 此步骤可以不做&#xff0c;经测试不影…

测试环境搭建整套大数据系统(六:搭建sqoop)

一&#xff1a;下载安装包 https://archive.apache.org/dist/sqoop/ 二&#xff1a;解压修改配置。 tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt cd /opt mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7修改环境变量 vi /etc/profile#SQOOP_HOME export SQOOP_…

成功经营社区店的商业模式与案例分析

随着互联网的发展&#xff0c;线上购物已经成为了人们生活中不可或缺的一部分。然而&#xff0c;实体店依然具有不可替代的优势&#xff0c;特别是在社区环境中。 社区店不仅能够为居民提供便利的购物体验&#xff0c;还能为店主带来稳定的收入。 本人在社区开鲜奶吧已经5年时…

数据结构2月19日

题目&#xff1a;顺序表作业 代码&#xff1a; 功能区&#xff1a; #include <stdio.h>#include <stdlib.h>#include "./d2191.h"SeqList* create_seqList(){SeqList* list (SeqList*)malloc(sizeof(SeqList));if(NULL list){return NULL;}list->p…

罗克韦尔AB的PLC实现ModbusTCP和ModbusRTU协议标签方式通讯

本文是通过IGT-DSER智能网关读写AB罗克韦尔Compact、Control系列PLC的标签数据缓存并转为Modbus从站协议&#xff0c;与上位机通讯的案例。 打开智能网关的参数软件(下载地址)&#xff0c;通过功能->数据转发与平台对接&#xff0c;再选择数据转发与缓存’&#xff0c;进入以…

基于SpringBoot的教师宿舍管理系统设计与实现(源码+调试)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SpringBoot的教师宿…

PolarDN MISC做题笔记

cat flag 使用01打开flag.png,发现图片尾部有padding的数据。D0 CF 11 E0 A1 B1 1A E1为office2007以前版本的文件头。将其另存为flag.doc,打开发现提示需要密码。&#xff08;可以注意到&#xff1a;D0CF11E0非常类似DOCFILE&#xff09; 使用john的office2john.py 提取hash …