今天我们来讲一下二叉树的概念和例题

要知道什么是二叉树,就先要知道什么是树:

我们来看一下树的详细定义:

        树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:

每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点

可能这不是很好理解,我们可以来看一个例子:

我们来可以下这个树,就可以分析一下上面的那几句话了,首先,上图是一个集合

我们把它标上号,这棵树就如下图:

我们称{B,C}是A的儿子节点,{D,E,F}是B的儿子节点,那么:

我们称A是{B,C}的父节点,B是{D,E,F}的父节点。

然而,我们做出一个表出来,来方便观察每个节点的父节点:

节点 A B C D E F
父节点 × A A B B B

然后呢,你会发现,A没有父节点,所以我们称A为整棵树的根节点。

所以呢,到此为止,我们在上面那句话就解释完毕了。

我们来讲一下树的”度“的这个概念,其实树的度就是一个节点的儿子个数。

那么,言归正传,其实,二叉树就是每个节点的”度“最高为2的树,我们称它为”二叉树“

我们现在来了解一下二叉树的4个性质:

二叉树的四个性质(重点):

第一个性质:

在非空二叉树中,第i层的总节点数不超过,

这个还是比较好证明:就当第i层都是慢的节点,

i=1,总节点数是1

i=2,总节点数是2

i=3,总节点数是4

以此类推所以我们得出:在非空二叉树中,第i层的总节点数不超过,

第二个性质:

深度为h的二叉树最多有个节点,最少有h个节点。

最少的很容易想到,在这里不与证明,最大就有一点难,需要一些数学基础

到深度为h,其实就是,公比为2

所以就是:,带入:

也就是,我们知道,所以:

深度为h的二叉树最多有个节点,最少有h个节点。

第三个性质:

对于任意一棵二叉树,如果其叶节点数为a,读书为2的节点数为b,那么a=b+1

第四个性质:

具有n个节点的完全二叉树的深度为,此性质跟第一个类似,在此不再介绍

我劝你们去休息一下,马上又是重点(看没看到下面的东西在上面的基础上还加了个“难字”)

二叉树的遍历(重难点):

我在这里画一棵二叉树:

我们先来了解一下先序遍历,他的方法是根、左、右,所以先序遍历是:ABDCEGFH

我们再来了解一下中序遍历,他的方法是左、根、右,所以中序遍历是:DBAGECFH

我们再来了解一下后序遍历,他的方法是左、右、根,所以后序遍历是:CBGEHFCA

讲的不是很详细,希望谅解一下,建议去看一下这个视频:三分钟教会你遍历二叉树!

时间很短啊,也十分详细,这里上一下二叉树前、中、后序的遍历函数

先序、中序、后序遍历的代码:

void qian(int x){if(x>0){cout<<tree[x].data<<" ";qian(tree[x].left);qian(tree[x].right);}
}
void zhong(int x){if(x>0){zhong(tree[x].left);cout<<tree[x].data<<" ";zhong(tree[x].right);}
}
void hou(int x){if(x>0){hou(tree[x].left);hou(tree[x].right);cout<<tree[x].data<<" ";  }
}

也就这样,自己看吧……

接下来,是二叉树的经典例题,可以参考一下我的这篇博文:找树根和孩子

写的也是十分详细,好了,今天就到此为止吧!

二叉树的基本概念与例题(一学就会)相关推荐

  1. 学习三分 (概念 + 模板 + 例题:曲线)

    这好像是我第一次尝试写一个新知识入门 而不是习题解 文章目录 三分概念 模板 例题:曲线 题目 题解 代码实现 三分概念 我们都知道,二分是在一个单调函数(即一次函数)上通过每次查找折半的方式,对答案 ...

  2. 【数据结构】 树与二叉树的基本概念、结构特点及性质

    前言:本章内容主要是数据结构中树与二叉树的基本概念.结构特点及性质的引入. 文章目录 树的概念 树的特点: 树的常用术语: 树的表示: 代码创建: 树在实际中的应用: 二叉树的概念 特殊的二叉树 满二 ...

  3. 二叉树的基本概念以及性质

    二叉树的基本概念以及性质 1.二叉树的定义 1.1 特殊的二叉树 2. 二叉树的性质 1.二叉树的定义 二叉树是由一个根结点和两棵称为左子树和右子树的二叉树构成,有左右的顺序之分.所以三个结点的树只有 ...

  4. 数据结构笔记(1)——二叉树的基本概念+存储结构及转化

    数据结构二叉树笔记(1) 二叉树定义 二叉树,有序树,无序树的区别 一个三结点的有序树,无序数,二叉树的排列 1.无序树 2.有序树 3.二叉树 二叉树的路径和路径长度 二叉树的性质 树的存储结构 1 ...

  5. 二叉树的基本概念(定义,特性,存储结构等)

        一.二叉树的定义     二叉树(Binary Tree)是n(n>=0)个数据元素的有限集合,该集合可以为空(空二叉树),也可以由一个称为根(root)的元素及两个不相交的,被分别称为 ...

  6. 怎么判断第几范式例题_学完就忘、做题就懵!初级会计怎么备考才能更高效?...

    备考初级会计之路真是艰辛,目前官方政策初级会计职称是一年一考,早早开始学吧,又有惰性,总觉得时间还很多,报完名再开始学吧,又总是搞不透彻知识点,一个知识点需要一天甚至更多才能消化...... 很多时候 ...

  7. 原python基础概念整理_Python从头学之基础概念整理

    学程序真的是一个无法间断的过程,只要你懈怠,种种原因都是你的理由.然而造成的后果就是到目前位置,一个心目中的项目都没有完美的做出来: 归根结底,其实就是基础没有打好,因为每一个复杂的功能都是由很多简单 ...

  8. 树和二叉树的基本概念(二级)

    我们来看数据结构的另外一块内容,树和二叉树,这是我们数据结构的一个重点,尤其是二叉树来说,树是一个重点,我们主要是研究二叉树,先看一下树的基本概念,然后我们再看一下二叉树的基本知识,这两部分讲完之后呢 ...

  9. 二叉树的基本概念和性质

    目录 一.树的概念和结构 1.1 树的概念 1.2 树的重要概念 1.3 树的表示​​​​​​​ 二. 二叉树概念及结构 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉 ...

最新文章

  1. jquery.ajax的url中传递中文乱码问题的解决方法
  2. 十天学会php之第五天
  3. 终于有人讲透了芯片是什么(电子行业人士必读)
  4. 永洪Desktop全能力永久免费 国产数据分析工具迈向新阶段
  5. 在shell中改变当前环境路径
  6. js json转excel并下载
  7. pe卸载win10更新补丁_Win10怎么卸载有问题更新补丁|Win10卸载更新补丁
  8. python中的乘方_python乘方_python 乘方_python乘方符号 - 云+社区 - 腾讯云
  9. Origin2018给两条曲线间画阴影/使用数据标记功能/绘制分段函数/求分段函数的微分图
  10. C++ OpenCV(四):绘制几何图形
  11. python3.5中文手册_Python-3.5.X官方学习入门指南中文版
  12. 海外并购不失为好时机
  13. 机器人相互教学让知识瞬间转移 AI迎来指数级进化 | 技术
  14. Java基础 switch用法
  15. BIOS知识枝桠——FV
  16. 华为OD机试 -众数和中位数(Java) | 机试题+算法思路+考点+代码解析 【2023】
  17. 问题解决:Word多了一页空白页
  18. OpenCV 学习笔记(模板匹配)
  19. ENVI 5.6软件安装教程
  20. (何凳成博客)MySQL 加锁处理分析——学习笔记

热门文章

  1. 女生头发怎么画?日系二次元女生头发画法
  2. 腾讯云服务器可以干嘛?
  3. 沉浸式体验一:弱化系统栏的显示
  4. 2022年G3锅炉水处理试题及模拟考试
  5. 电子货架标签------2.9寸无源电子墨水卡片
  6. STM32驱动K210人脸识别模块经验汇总
  7. 成都计算机应用研究所 怎么样,中科院成都计算机应用研究所计算机应用技术怎么样...
  8. office word 自定义大纲目录,根据大纲序号来定义子序号
  9. coreldraw x7怎样设置禁网_怎样设置文件禁止访问网络
  10. 递归神经网络结构形式,RNN神经网络基本原理