【数据结构】01_二叉树到底是个什么玩意儿?

【数据结构】 树与二叉树的基本概念、结构特点及性质 前言:本章内容主要是数据结构中树与二叉树的基本概念、结构特点及性质的引入。 文章目录树的概念树的特点:树的常用术语:树的表示:代码创建:树在实际中的应用:二叉树的概念特殊的二叉树满二叉树完全二叉树二叉树的性质及其推导:练习题:习题1:习题2:习题3: 树的概念 数据结构中的定义的树比较有趣,它是我们所见真实树的倒置,然后再抽象的一种结构,比较有意思。同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家谱、企业的组织架构等等。 树是由n(n>=0)个有限结点组成一个具有层次关系的集 阅读详情

【数据结构】01_二叉树到底是个什么玩意儿?

定义

在计算机科学中,二叉树(英语:Binary tree)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的树结 构。通常分支被称作“左子树”或“右子树”。二叉树的分支具有左右次序,不能随意颠倒。 二叉树的第 i 层至多拥有 2 i − 1 2^{i-1} 2i−1个节点;深度为 k 的二叉树至多总共有 2 k − 1 2^k-1 2k−1个节点(定义根节点所在深度 k 0 = 0 k_0 =0 k0​=0,而总计拥有节点数符合的,称为“满二叉树”;深度为 k 有 n 个节点的二叉树,当且仅当其中的每一节点,都可以和同样深度 k 的满二叉树,序号为 1 到 n 的节点一对一对应时,称为完全二叉树。对任何一棵非空的二叉树 T ,如果其叶片(终端节点)数为 n 0 n_0 n0​,分支度为 2 的节点数为 n 2 n_{2} n2​,则 n 0 = n 2 + 1 {n_{0}=n_{2}+1} n0​=n2​+1。与普通树不同,普通树的节点个数至少为 1 ,而二叉树的节点个数可以为 0 ;普通树节点的最大分支度没有限制,而二叉树节点的最大分支度为 2 ;普通树的节点无左、右次序之分,而二叉树的节点有左、右次序之分。二叉树通常作为数据结构应用,典型用法是对节点定义一个标记函数,将一些值与每个节点相关系。这样标记的二叉树就可以实现二叉搜索树和二叉堆,并应用于高效率的搜索和排序。

看完这个定义是不是还是一脸懵逼,其实我们只要记住其中的几点:
1.二查树是棵树,是树就可能会有分支
2.二叉树一个结点最多只有两个分支
3.二叉树的的左分支结点小于父结点,右分支结点大于大于父结点
好了,这几点应该能记得住吧。

形式

斜树

斜树,顾名思义看起来它是斜的。所有的结点都只有左子树,或者所有的结点都只有右子树。有图为证,请看下图:
在这里插入图片描述

完全二叉树

完全二叉树,从命名上看像是挺完美的一棵二叉树,但确实也是挺完美的。那么它到底完美在哪里呢,请看下图:
在这里插入图片描述
它具备了几个特质:
1.非倒数第一层的结点都是满的(包含了两个分支结点)
2.最下层叶子结点不会单独存在于右侧
3.同样结点数量的二叉树,完全二叉树深度最小
上面又是说的什么意思呢,结合图示我们再理解一遍
在这里插入图片描述

满二叉树

满二叉树,从命名上看已经满了,不能再多了。满二叉树也是完全二叉树,所有的叶子结点都在最后一层。话不多说,直接看图理解:
在这里插入图片描述

总结

二叉树是最容易理解的树,本文也只是简单通过动图和说明简单介绍二叉树是什么及一些特性。后续会继续补充使用场景。

数据结构编程实践20讲(Python版)—05二叉树 数据结构编程实践20讲(Python版)-05二叉树 阅读详情

相关推荐

二叉树c++算法,二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。

 从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作:  (1)访问结点本身(N),  (2)遍历该结点的左子树(L),  (3)遍历该结点的右子树(R)。 以上三种操作有六种执行次序:  NLR、LNR、LRN、NRL、RNL、RLN。

二叉树

二叉树Binary Tree的定义 二叉树Binary Tree是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树组成。对于在某个阶段都是两种结果的情形,比如开和关、0和1、真和假、上和下、对与错、正面与反面等,都适合用二叉树来建模。 二叉树的特点: 每个结点最多有两棵子树,所以二叉树中不存在度大于2 的结点 左子树和右子树都是有顺序的,次序不能颠倒 即使树中某结点只有一棵子树,也要区分它是左子树还是右子树 二叉树具

weixin_41896152的博客 380

告别单调!3种方法给VS2019换上VSCode同款NightOwl主题(附字体优化技巧)

本文详细介绍了三种将VSCode热门NightOwl主题移植到VS2019的方法,包括扩展市场直装、官方主题库导入与增强以及手动调色实现像素级复刻。同时提供了字体优化与视觉增强技巧,帮助开发者打造更舒适的编码环境。

weixin_28836989的博客 212

二叉树及其作用浅析

在学习数据结构和算法时看到各种树,把人都整蒙了,枯燥且提不起学习兴趣。等逐渐感受到二叉树的神奇作用和巨大的应用价值后,觉得二叉树原来也这么有趣,值得好好学习。 先从整体上认识下二叉树及其他各种树的区别和用途。 大致有哪些树? 树有很多种,其中二拆树因为其特殊的结构和特点在计算上最为常用。 常见的二叉树:二叉查找树,平衡二叉树(AVL),红黑树,B+树,B-树,字典树,满二叉树,完全二叉树,霍夫曼树,伸展树,最小堆,最大堆等。 二叉树有什么用? 二叉树应用非常广泛。 在操作系统源程序中,树和.

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 1万+

植物GO注释

本文主要是对没有GO term库的植物进行注释。 1、选用AgriGo 进行注释,在agriGO中点击species后,查看与你目标物种相近的物种作为库 2、比如我以甜菜为例 为了找到和GO term对应的ID,先找到PLAZA,进入网站https://bioinformatics.psb.ugent.be/plaza/versions/plaza_v3_di...

weixin_30300225的博客 2223

ENVI 5.6保姆级教程:高分七号DLC影像从打开到融合的完整流程(附避坑指南)

本文详细介绍了ENVI 5.6处理高分七号DLC影像的完整流程,包括环境准备、数据解压、正射校正、图像融合等关键步骤。特别针对国产卫星数据处理的独特挑战,提供了实用的避坑指南和优化技巧,帮助用户高效完成光学影像的预处理和质量提升。

weixin_33269743的博客 380

数据结构之二叉树

介绍二叉树的概念和作用,以及前中后序遍历的递归和非递归的方法

YIOUTH的博客 764

避坑指南:解决‘Logical volume contains a filesystem in use’错误,顺利完成LVM根目录扩容

本文详细解析了Linux系统中LVM根目录扩容时遇到的‘Logical volume contains a filesystem in use’错误,提供了从错误诊断到实战解决方案的完整指南。通过动态扩容技术、单用户模式操作和LVM快照等方案,帮助管理员顺利完成根目录扩容,避免数据丢失和系统崩溃。

weixin_28702105的博客 226

【全面解析!】二叉树及其应用

1.在用树表示的目录结构中,从根目录到任何数据文件只有唯一一条通道,因为树的特点是不相交2.3.(1)根据中序遍历和后序遍历顺序构建二叉树(2)根据前序遍历和中序遍历顺序构建二叉树Q1:为什么后序+中序构建二叉树是先root.left再root.right;而前序+中序构建二叉树是先root.right再root.left?A1:根据上面的图片我们可以看到,根据后序遍历的顺序,我们先在中序中找到根节点,下一步找到的是右树,所以我们在写代码的时候要先写root,再right,最后left;

m0_64799333的博客 2917

避坑指南:Win11修改用户文件夹名称后,如何彻底解决残留文件与路径错误?

本文针对Win11用户修改用户文件夹名称后遇到的残留文件与路径错误问题,提供了一套完整的解决方案。从诊断进程占用、使用资源监视器与命令行强力清理,到修复系统环境变量与软件配置,并详细介绍了创建符号链接这一终极兼容方案,帮助用户彻底解决路径依赖问题,恢复系统稳定。

pz890123的博客 829

C语言由scanf(“%d“,)非法输入字符造成的死循环及其解决方案

声明:此文章仅作为C语言学习历程中的思路整理,用于解决入门阶段较为浅显的问题,如有错误还请指正。 现象描述: 代码要求实现用户输入1或2,通过scanf("%d",&a)读取这个值,从而判断分属于1或2的两种情况。输入非1,2的数字都应该返回"Invalid Number!",并且要求重新输入数字。 while(a!=1&&a!=2) { printf("Invalid Number!\n"); printf("Enter the number:"); scan

weixin_49764077的博客 8717

二叉树的用途-(未完)

二叉树 二叉树是一种重要的数据结构,与数组、向量、链表都是一种顺序容器,它们提供了按位置访问数据的手段。但是有一个缺点,它们都是按照位置来确定数据,想要通过值来获取数据,只能通过遍历的方式。而二叉树在很大程度上解决了这个缺点,二叉树是按值来保存元素,也按值来访问元素。 二叉树由一个个节点组成,一个节点最多只能有两个子节点,从根节点开始左右扩散,分左子节点和右子节点,向下一直分支。 许多实际问...

LearnLHC的博客 1万+

【电子通识】TINA-TI怎么使用受控源向导创建受控源

TINA-TI怎么使用受控源向导创建受控源

一点硬件 357

【数据结构】二叉树的遍历

本章将会详细讲解二叉树的遍历的四种方式,分别为前序遍历、中序遍历、后续遍历和层序遍历。在学习遍历之前,会先带大家回顾一下二叉树的基本概念。学习二叉树的基本操作前,需要先创建一颗二叉树,然后才能学习其相关的基本操作,考虑到我们刚刚接触二叉树,为了能够先易后难地进行讲解,我们将暂时手动创建一颗简单的二叉树,用来方便大家学习。等二叉树结构了解的差不多后,后期我们会带大家研究二叉树地真正的创建方式。

有道无术, 术尚可求。有术无道, 止于术。 1万+

小波变换完全指南:从原理到实践的深度解析

在信号处理领域,傅里叶变换长期以来一直是频域分析的主要工具。然而,傅里叶变换存在一个根本性的局限:它只能告诉我们信号中包含哪些频率成分,却无法告诉我们这些频率成分在什么时刻出现。这就像是你知道一首歌用了哪些音符,却不知道这些音符的演奏顺序。小波变换(Wavelet Transform) 应运而生,它完美地解决了这个问题。小波变换不仅能够提供频率信息,还能同时提供时间信息,实现了信号的时频联合分析。本文将带你从零开始,深入理解小波变换的原理、实现和应用。傅里叶变换的定义如下: 它使用正弦和余弦这样的全局基函数

电脑管家 207

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java集合与数据结构——二叉树01

一文了解数据结构的二叉树基础知识~~

rain67的博客 2309

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数据结构05:树与二叉树 习题01[C++]

考研笔记整理,本篇作为树与二叉树的基本概念习题,供小伙伴们参考~🥝🥝

weixin_42789937的博客 1499

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

二叉树01(数据结构初阶)

二叉树(数据结构初阶)

2402_87779153的博客 1111

数据结构--树和二叉树01

u1.树的基本概念: 树的度:所有结点的度当中,度数最大的。 叶子结点:度为0的结点 分支结点:除了叶子节点以外,都是分支结点。 内部结点:除了叶子节点,和根节点以外所有的结点。 总结点为  N,总度数为K  ,则  N = K +1 2.树的遍历 遍历混乱的时候,可以假设空结点位置为 null  ,也走一下 前序(先根)遍历:1--2--6--7--3-

一个程序猿 3625

数据结构——二叉树

的。

odoaobo的博客 757

数据结构 第五章(树和二叉树)【上】

(1)树是n(n≥0)个结点的有限集,它或为空树(n=0),或为非空树。对于非空树T,有且仅有一个称之为根的结点(一棵树可以只有根结点,没有其它结点),除根结点以外的其余结点可分为m(m>0)个互不相交的有限集,其中每个集合本身又是一棵树,并且称为根的子树(下图中结点A有3棵子树)。(2)树的结构定义是一个递归的定义,即在树的定义中又用到树的定义。(1)二叉树(Binary Tree)是n(n≥0)个结点所构成的集合,它或为空树(n=0),或为非空树。对于非空树T有且仅有一个称之为根的。

Zevalin的博客 1798

01数据结构-平衡二叉树

前面我们介绍了二叉查找树,假设我们最开始送进去的序列就是有序的,那么会造成树往一边倒,如图1,树退化成了单链表,此时查找效率跟我们没有树的时候效率是一样的。那怎么在二叉搜索树的基础上让我们的高度可控,这就是我们今天增加的约束,增加完这个约束后就是我们今天讲的二叉平衡树。图1。

2302_82136376的博客 1106

[数据结构]二叉树详解

对于任何一颗二叉树,如果度为0其叶节点个数为n0,度为2的分支结点个数为n2,则n0=n2+1(通俗来讲就是度为0的永远比度为2的多一个)。叉树比较难,为了降低学习成本,此处手动快速创建一棵简单的二叉树,快速进入二叉树操作学习,等二叉树结构了解的差不多时,反过头再来研究二叉树真正的创建方式。不能把1的值带进队列,这样不好把1的左右孩子带进去,所以得存1的结构体,但是结构体比较大,所以存1的结构体的指针。:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。,则它就是满二叉树。

m0_74978334的博客 1861

数据结构——二叉树的实现

title: 数据结构——二叉树的实现 categories: 数据结构 tags: 树 abbrlink: 1587207490 date: 2020-01-11 16:46:39 二叉树的实现 package com.leeyf.tree; import javax.sound.midi.Soundbank; import java.sql.SQLOutput; import jav...

李亚飞的博客 3352

数据结构Java01【数据结构概述、数组基本使用】

课件(源码、XMind文件): P1-1.1数据结构概述 什么是数据结构:数据与数据之间的关系! 数据的存储结构:数据在计算机中如何存储! 数据的逻辑结构:数据与数据之间的关系! P2-1.2算法概述 P3-2.1数组的基本使用 P4-2.2数组元素的添加 P5-2.3数组元素的删除 P6-2.4面向对象的数组 P7-2.5查找算法之线性查找 P8-2.6 查找算法之二分法查找 ...

upward 2823

C++数据结构——二叉树

给你一个满二叉树的层次遍历序列,请编程输出该二叉树的前序遍历序列。第一行是n(n小于26),表示有n个节点。第二行是该满二叉树的节点对应字母的层次遍历序列。输出该满二叉数的先、中、后序遍历序列。3 B A CBAC ABC ACB创建满二叉树 将给定的字母压入队列 利用队列和层次遍历给满二叉树赋值 先序遍历 中序遍历 后序遍历 完整代码 问题 2: 任意二叉树的先、中、后序遍历 题目描述 有若干个节点,每个节点上都有编号,把这些节点随意地构成二叉树,请编程输出该二叉树的前序遍历序列。第一行是n(n小于1

qq_26577025的博客 1506
上一篇: 零基础基于windows离线搭建RAP2
下一篇: 【数据结构】02_平衡二叉树到底是个什么玩意儿?
github_38410229
博客等级 码龄10年 2粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值