C语言数据结构(7)——树、二叉树前言

欢迎来到博主的专栏——C语言数据结构
博主ID:代码小豪

文章目录

    • 二叉树
    • 特殊二叉树
      • 满二叉树
      • 完全二叉树
    • 完全二叉树的存储结构

树是一个非线性的数据结构,由N个结点构成的集合。

树的各个结点由一个根结点联系起来,这个根节点没有前驱元素。
在这里插入图片描述

深度

所有能被根节点向下遍历K次访问到的节点同属于同一个深度。
比如:
在这里插入图片描述

父子节点
一个节点的下一层结点是子节点,上一层结点被称为父节点。同一层节点被称为兄弟节点。根节点不存在父节点。
在这里插入图片描述

一个节点拥有的子节点个数,称为该节点的度。
在这里插入图片描述

叶子结点,也称终端节点,指的是度为0的节点,比如节点6,7,5,3,这些节点被称为叶节点
树的度:一棵树中,最大的节点的度称为树的度; 如上图:树的度为3
节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推
树的高度或深度:树中节点的最大层次; 如上图:树的高度为4

子树

选取树中除根节点外的任意节点,该节点与其子孙节点构成这个树的子树。
在这里插入图片描述

如图中,由B为根节点,B,E,F,H构成一个子树,以G为根结点,G,I构成一个子树。

二叉树

每个节点最多拥有两颗子树,即二叉树的度不超过2.
如下图
在这里插入图片描述
二叉树的特点有:
(1)每个节点最多有两个子树,称为该节点的左子树和右子树。注意所述的是最多两个子树,因此一个子树,或者没有子树都成立。
(2)左子树和右子树是有顺序的,比如F是C的右子树,因为F的是由C的右指针指向的,因此F是右子树。

特殊二叉树

满二叉树

二叉树的所有非叶子节点的度都为2,且最后一层为满的二叉树称为满二叉树
在这里插入图片描述

(1)假设满二叉树的深度为N,二叉树的节点数为2^N-1
(2)慢二叉树的第K层的的节点个数为:2^(K-1)

完全二叉树

定义:深度为K的二叉树,将其N个节点按照从上到下,从左到右的顺序进行标号,如果这些节点的标号与满二叉树一一对应,那么这个树称为完全二叉树

如下图
在这里插入图片描述
在这里插入图片描述

完全二叉树的特点:
(1 )叶子节点只存在最下两层
(2)最下层的叶子节点一定在左边连续
(3)不存在只有右子树的节点
(4)相同节点数的二叉树,完全二叉树的深度是最小的

完全二叉树的存储结构

通常情况下,二叉树都会采用链式存储结构,构造一个右指针指向右子树,一个左指针指向左子树。这是因为顺序结构不能展示出二叉树之间的节点关系,以下图二叉树为例。
在这里插入图片描述
其顺序存储结构为
在这里插入图片描述
节点12是节点6的子节点,但是顺序结构并不能很好表示这个关系,当然我们可以在结构体中加入父子节点的下标。但是总体而言并不方便
在这里插入图片描述

但是满二叉树和完全二叉树适合用顺序结构,这是因为满二叉树和完全二叉树的父子节点具有某种规律

在这里插入图片描述

观察上图:完全二叉树的顺序结构拥有两个特点
(1)左子节点的下标等于父节点的下标乘2+1
(2)右子节点的下标等于父节点的下标乘2+2
(3)父节点等于子节点的下标-1除2.

以节点5为例,节点5的下标为4,其左子节点10的下标为9,42+1=9。
右子节点11的下标为10,4
2+2=10
其父节点2的下标为1,(4-1)/2=1

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子科技大学链时代工作室招新题C语言部分---题号E

1. 题目 这道题大概的意思是说,一座城市中被埋了许多雷(用一个只含0和1的字符串表示城市,1代表有雷,0代表无雷)。 你作为一个排雷兵,需要花最少的钱引爆所有的雷来使城市中不再有雷(太逆天了&a…

【小白刷leetcode】第15题

【小白刷leetcode】第15题 动手刷leetcode,正在准备蓝桥,但是本人算法能力一直是硬伤。。。所以做得一直很痛苦。但是不熟练的事情像练吉他一样,就需要慢速,多练。 题目描述 看这个题目,说实在看的不是很懂。索性我们直…

基于Java+SpringMVC+vue+element实现前后端分离校园失物招领系统详细设计

基于JavaSpringMVCvueelement实现前后端分离校园失物招领系统详细设计 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收…

Vue3+TS+Vite 找不到模块“@/components/xxx/xxx”或其相应的类型声明

引入vue文件时文件是存在的,引入路径也是对的,报找不到模块,有一些解决方案是在tsconfig.json里面做一些配置,大家可以自行百度(不知道是不是我百度的不对,我的没有解决)还有一种是在项目根目录…

从 VNCTF2024 的一道题学习QEMU Escape

说在前面 本文的草稿是边打边学边写出来的,文章思路会与一个“刚打完用户态 pwn 题就去打 QEMU Escape ”的人的思路相似,在分析结束以后我又在部分比较模糊的地方加入了一些补充,因此阅读起来可能会相对轻松。(当然也不排除这是…

AI赋能写作:AI大模型高效写作一本通

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…

工业物联网平台在水务环保、暖通制冷、电力能源等行业的应用

随着科技的不断发展,工业物联网平台作为连接物理世界与数字世界的桥梁,正逐渐成为推动各行业智能化转型的关键力量。在水务环保、暖通制冷、电力能源等行业,工业物联网平台的应用尤为广泛,对于提升运营效率、降低能耗、优化管理等…

Linux课程_____用户的管理

一、规则 用户至少属于一个组,在创建时如果不指定组,将会创建同名的组 用户只能有一个基本组(主组),但可以隶属于多个附加组 如果一个组作为某用户的基本组,此组将不能被删除 UID: 用户标识 GID: 组的标识 root管理员的uid及gid 都为0 二、用户的配置文件 1./etc/passwd …

STL:List从0到1

🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🙈个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE 🐼本文由GOTXX原创,首发CSDN&…

从政府工作报告探究计算机行业发展

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划,不仅反映了国家整体的发展态势,也为各行各业提供了发展的指引和参考。随着信息技术的快速发展,计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…

【蓝桥杯单片机】十三届省赛“重难点”解析(附源码)

【蓝桥杯单片机】十三届省赛“重难点”解析 一、题目难点解析二、易出错点提示三、完整代码链接 笔记包括:①题目难点解析、②易出错点提示、③完整代码链接 注:本文提供的所有代码都是使用第十四届竞赛包完成 ⭐----------系列文章链接----------⭐ 【蓝…

面试经典-MySQL篇

一、MySQL组成 MySQL数据库的连接池:由一个线程来监听一个连接上请求以及读取请求数据,解析出来一条我们发送过去的SQL语句SQL接口:负责处理接收到的SQL语句查询解析器:让MySQL能看懂SQL语句查询优化器:选择最优的查询…