当前位置: 首页 > news >正文

树的知识点整理

树的概念      

概念A     

树是一种非线性的数据结构,能很好地描述有分支和层次特性的数据集合。

一棵树是由n(n≥0)个元素组成的有限集合。

1)每个元素都可以称为结点(node):

2)任意一棵非空树中(>0),有一个特定的结点,称为根结点或树根(root);

3)在一棵非空树中,结点a是树的一个结点,由a以及的所有后代组成的结构,称为树的子树。

4)在一棵非空树中,从某个结点向下,分出若干结点a1,

a2,...分出的结点α以及它的所有后代,称为结点的子树。

5)没有子树的结点,称为叶结点。

一个结点的子树个数,称为这个结点的度。

树中各结点度的最大值,称为这棵树的度。

棵树中所有的结点层次的最大值称为树的深度。

概念B     

二叉树是一种特殊的树型结构,树中结点的度都不大于2,它是一种最简单且最重要的树。

在二叉树的第层上最多有2的i-1次方个结点(i≥1)。
深度为k的二叉树最多有2的k次方-1个结点(k≥1)。

满二叉树:   

一棵深度为k且有2的k次方-1个结点的二叉树称为满二叉树。

完全二叉树:   

二叉树中除去最后一层结点为满二叉树,且最后一层的结点依次从左到右分布。
需要注意的是,满二叉树也是完全二叉树。

二叉树的遍历

二叉树是由三个基本单元组成:根结点、左子树和右子树。

二叉树的三种遍历:

先序:访问根结点一>遍历左子树一>遍历右子树(简称:根左右)

中序:遍历左子树一>访问根结点一>遍历右子树(简称:左根右)

后序:遍历左子树一>遍历右子树一>访问根结点(简称:左右根)

先序遍历     

访问根结点一>遍历左子树一>遍历右子树(简称:根左右)

先序序列的第一个点是根结点。

在子树的先序序列中,第一个点是该子树的根。

中序遍历      

遍历左子树一>访问根结点一>遍历右子树(简称:左根右)

第1步:有左子树一直找左子树。

第2步:当没有左子树或左子树已经遍历完,访问根结点。

第3步:找右子树,重复上述步骤。

中序序列可以通过根结点划分左右子树。

后序遍历      

遍历左子树一>遍历右子树一>访问根结点(简称:左右根)

第1步:有左子树一直找左子树。

第2步:没有左子树,找右子树,重复上述步骤。

第3步:当没有右子树或左右子树已经遍历完,访问根结点。

后序序列的最后一个点是根结点。

在子树的后序序列中,最后一个点是该子树的根。

序列构造二叉树      

中序遍历序列和先序遍历序列可以构造一棵二叉树。

1.根据先序遍历序列确定根结点

2.根据中序遍历序列确定左右子树结点

3.循环上述步骤,直到确定所有结点

中序遍历序列和后序遍历序列可以构造一棵二叉树。

1.根据后序遍历序列确定根结点

2.根据中序遍历序列确定左右子树结点

3.循环上述步骤,直到确定所有结点

中序遍历序列和层序遍历序列可以构造一棵二叉树。

1.根据层序遍历序列确定根结点

2.根据中序遍历序列确定左右子树结点

3.循环上述步骤,直到确定所有结点

http://www.dtcms.com/a/268214.html

相关文章:

  • CentOS6的“ifupdown“与Debian的“ifupdown“有什么不同? 笔记250706
  • jxWebUI--web组件说明
  • 深入解析 Kafka Broker 如何管理分片与副本
  • Flowith,有一种Agent叫无限
  • 零成本搭建浏览器远程Linux桌面:Ubuntu/Debian方案全解析
  • Windows部署本地照片管理Immich
  • Mysql 数据库结构优化
  • 工业相机和镜头
  • 前端开发常见问题(从布局到性能优化)
  • axios笔记
  • debian及衍生发行版apt包管理常见操作
  • 从前端转nest.js开发的学习路线
  • 【系统分析师】2023年真题:论文及解题思路
  • Leet code每日一题
  • python库 dateutil 库的各种案例的使用详解
  • ASP.NET代码审计 Web Forms框架 SQL注入漏洞
  • stm32地址偏移:为什么相邻寄存器的地址偏移量0x04表示4个字节?
  • 探寻《答案之书》:在随机中寻找生活的指引
  • Python 中 Pendulum 库的详细使用:更精确的日期时间处理
  • Ubuntu20.04安装mujoco210, mujoco-py时的报错处理
  • 深度特征提取在LIDC-IDRI数据集多分类任务中的优化细节
  • 【数据治理】要点整理-《信息技术服务治理第3部分:绩效评价》GB/T 34960.3-2017
  • MyBatis实战指南(九)MyBatis+JSP+MySQL 前端页面实现数据库的增加与删除显示数据
  • std::vector<bool>有什么特殊的吗
  • 基于拓扑结构检测的LDPC稀疏校验矩阵高阶环检测算法matlab仿真
  • Redis集群和 zookeeper 实现分布式锁的优势和劣势
  • leetcode71.简化路径
  • WPF学习笔记(26)CommunityToolkit.Mvvm与MaterialDesignThemes
  • 如何正确规范的开发术语自己的TYPECHO插件
  • AI做美观PPT:3步流程+工具测评+避坑指南