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

走进二叉树的世界 ———性质讲解

二叉树的性质和证明

  • 前言
  • 1.二叉树的概念和结构
    • 特殊的二叉树:
  • 二叉树的性质

前言

本篇博客主要讲述的是有关二叉树的一些概念,性质以及部分性质的相关证明,如果大伙发现了啥错误,可以在评论区指出😘😘
请添加图片描述

1.二叉树的概念和结构

一棵二叉树是节点的一个有限集合,该集合:

  1. 或者为空
    2.由一个根节点加上两棵别称为左子树和右子树的二叉树组成。
    如下图所示:在这里插入图片描述

特殊的二叉树:

  1. 满二叉树:一个二叉树,每一层的节点都达到最大值,这个二叉树就是满二叉树。也就是说,如果一个二叉树的层次为k,且结点总数是2^k-1,这棵树就是满二叉树。

由于每层都是满的,所以节点总数:
2^0 + 2^0 + 2^1 + ······+ 2^(k-1) = 2^k - 1

  1. **完全二叉树:**完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为k的,有n个节点的二叉树,当且仅当其每个节点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。(通俗的来讲,就是当二叉树的前k-1层为满二叉树,最后一层的节点连续排布时就是完全二叉树)

从该定义同时也可以知道,满二叉树是一个特殊的完全二叉树。
如下图所示即是满二叉树:
在这里插入图片描述

二叉树的性质

  1. 若规定根节点的层数是1,则一颗非空二叉树第i层上最多有2^(i-1)个结点。(根据二叉树的结构不难看出)
  2. 若规定根结点的层数为1,则深度为h的二叉树的最大结点数是 2 h − 1 2^h-1 2h1.

上面在讲解满二叉树时已经给出证明。

  1. 对于任何一棵二叉树,如果度为0其叶节点个数为 n 0 n_0 n0,度为2的分支结点个数为 n 2 n_2 n2,则有 n 0 n_0 n0 = n 2 n_2 n2 + 。

这里提供两种方法进行帮助理解:
1.关系推导:
(1)首先,对一个只有根节点的树添加一个结点,此时度为0的结点数不点,也就是增加一个度为1的结点,并不影响度为0的结点和度为2的结点个数。
在这里插入图片描述
(2)在此之后,每次多一个度为2的结点数,度为0的结点数也会增加一个,所以度为0的结点数总是比度为2的结点数多1。
在这里插入图片描述
2. 数学推导
已知一棵二叉树的结点总数为
S S S = n 0 n_0 n0+ n 1 n_1 n1+ n 2 n_2 n2
S S S = n 2 ∗ 2 n_2*2 n22 + n 1 ∗ 1 n_1*1 n11 + n 0 ∗ 0 n_0*0 n00
联立两式即可得出 n 0 n_0 n0 = n 2 + 1 n_2+1 n2+1

  1. 若规定根结点的层数为1,具有n个结点的满二叉树的深度,h= l o g 2 ( n + 1 ) log_2(n+1) log2(n+1)

该性质的证明即是结点总个数的逆推导。

  1. 对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有结点从0开始编号,则对于序号为i的结点有:
  • 若i>0,i位置结点的双亲序号:(i-1)/2;i=0,i为根结点编号,无双亲结点
  • 若2i+1<n,左孩子序号:2i+1,2i+1>=n否则无左孩子
  • 若2i+2<n,右孩子序号:2i+2,2i+2>=n否则无右孩子

http://www.kler.cn/a/3636.html

相关文章:

  • Matlab自学笔记四十五:日期时间型和字符、字符串以及double型的相互转换方法
  • 事件和方法
  • day 21
  • 【winRAR】windows11右键直接打开winRAR
  • Java-数据结构-二叉树习题(2)
  • 成就与远见:2024年技术与思维的升华
  • 一种LCD屏闪问题的调试
  • C语言小程序:通讯录(静态版)
  • 十九、全新的 Web 开发构建工具——Vite
  • 五分钟带你了解 计算机操作系统——进程与线程(万字详解·图文)
  • springboot复习(黑马)
  • Fiddler抓取https史上最强教程
  • Java中循环使用Stream应用场景
  • C++中的list类【详细分析及模拟实现】
  • python@模块和脚本@module@script@package_import
  • 「Mac安装ps」Adobo Photoshop 2023 下载安装详情教程,支持 AI 插件的 24 版 Photoshop
  • 信创办公–基于WPS的PPT最佳实践系列 (添加幻灯片编号和其他页脚)
  • 【linux】多线程控制详述
  • pugixml教程
  • RabbitMQ在 Linux下(Centos7)离线安装
  • adb常用指令
  • DeepNet :Scaling Transformers to 1000 Layer
  • GPT体验
  • realloc的补充 柔性数组
  • 蓝桥杯刷题冲刺 | 倒计时15天
  • Verilog之小规模经典电路设计