我怀着激动的心 走上了这颗树

今天是2021年11月12日

今天开始上树!!!!!!

生活中的树形结构:

树:

 根节点:

一棵树有且只有一个根节点就是最上面的节点

兄弟节点:

每一行的节点  它们具有相同的父节点 那么就被称之为兄弟节点

子树的概念:

注意:红色部分就是我们所说的子树

什么是左子树和右子树呢?

举个例子:5的左子树就是51  右子树就是52

 再比如说  2的左子树为21  右子树为22包含的红色区域的那一颗

 

比如说2的度就是2  因为它的子树个数为2

根节点1的度为5  因为它的子树个数为5

树的度:

比如说:上面的树的度为5

因为所有节点当中根节点的度为最大值为5

叶子节点:

 节点的深度:

举个例子:节点2的深度就是2

因为从2到根节点的唯一路径就是2

根节点算一个节点自身算一个 加起来路径就是2 

节点的高度:

举个例子:

假如说计算节点2的高度

何为高度?

当前节点到最远叶子节点的路径上的节点个数

首先我们应该知道什么是叶子节点?

度为0的节点

何为度?

就是任意一个节点子树的个数 

那么可知:节点2的高度即为节点2到221 或222 或223其中任意一个节点

那么可得出高度为3 !!!!

包括自身节点在内一共遍历三个节点

了解一下:

Ok

重点来了:

二叉树  Binary Tree

每一个二叉树的度最大为2 表示最多有2颗子树

左右子树是有顺序的   左右是有严格区分的  是有序树

要细分出左右子树

只有右子树

1.

2.

我们该如何推导公式:n0=n2+1

对于一个二叉树来说:

度只可能是 0  1  2 

那么我们上面设出叶子节点(即是度为0的点)为n0

度为2的点节点个数为n2

度为3的设为n3   那么总的节点个数为n=n0+n1+n2

这个清楚之后:

我们来观察边的关系:

当度 数为2时证明它只有两个子树  那么它的边就有两个边

度为1时   只有一个子树  那么度为1的节点 有一个边

由于叶子节点度为0  即是没有子节点 那么没有边

那么边数公式即为:T=n1+2*n2

我们知道一个常理:除了根节点之外的所有节点的上面都有一条边

如图红色圈出即是

那么我们又可以得出T=n-1    n为总的节点个数

n=n0+n1+n2

那么合并上述两个得:

n1+2*n2=n-1=n0+n1+n2-1

那么就可以推出n2=n0+1  

 真二叉树:

1.度不可以为1的二叉树 

2.度要么为2  要么为0

因为节点15和节点13都是度为1的节点

满二叉树是 真二叉树的升级版

它们都是满足同一个度的限制

但是满二叉树必须所有的叶子节点都在最后一层

总结:

当高度为h的时候  二叉树节点最多为n

高度那个公式是用两边同时取对数即可

完全二叉树:

节点从上到下 从左到右依次排布 那么这就是完全二叉树

当最后一行  排满的时候就是满二叉树

并且记住:

完全二叉树的叶子节点只会出现在最后2层


完全二叉树的性质:

对左右取对数得第二个公式

完全二叉树至少有2的h-1次方个节点

如何确定h与n的关系:

h=log2n向下取整+1

何为向下取整?

假如说log2n结果是4.2  那么向下取整的结果为4

记住:

 h为任意节点所在的高度

我们在计算机中进行

一般int n;就表示只取整数部分 那就相当于向下取整

那么我们也可以把log2n的小数结果强制转换成int类型

那么就相当于向下取整

 总结:

何为高度?

从任意节点到最远叶子节点的路径

路径即是节点个数 

何为叶子节点?

度为0的点

何为度?

任意节点的子树的个数

性质二:

假如是从1开始编号

从0开始编号:

一道例题:

 先根据度的大小 由低到高来设出各节点的个数:

n0    n1      n2

n=n0+n1+n2   并且n0=n2+1

那么n=2*n0+n1-1

我们知道完全二叉树叶子节点只出现在最后两层

并且它有向左靠的子树排放规律

故推出  度为1的节点数要么为0要么为1

那么当n1=0时  n为奇数  n0=(n+1)/2

当n1=1 时  n为偶数  n0=n/2

也就是说

当n为偶数时  我们可知多加了一个1/2

那么我们应当floor((n+1)/2) 向下取整

但是编程时 我们默认了是向下取整

那么对于求叶子节点个数时:

直接n0=(n+1)>>1

这个结论是:

对于完全二叉树而言

但是编程的过程中:我们默认是向下取整

因此我们最好是使用floor那一个公式

二叉树 Binary Tree相关推荐

  1. 【数据结构】二叉树 (Binary Tree)

    目录 一. 什么是树? 二. 二叉树 特殊二叉树 二叉树的性质 二叉树的存储 二叉树的遍历 二叉树的基本操作 一.什么是树? 之前咱们学习了一些简单的数据结构,如顺序表,链表,这些都是线性结构,线性结 ...

  2. 『数据结构与算法』解读树(Tree)和二叉树(Binary Tree)!

    『数据结构与算法』解读树(Tree)和二叉树(Binary Tree)! 文章目录 一. 树 1.1. 树的定义 1.2. 树的基本术语 1.3. 树的性质 二. 二叉树 2.1. 二叉树的定义 2. ...

  3. [Swift]LeetCode968.监控二叉树 | Binary Tree Cameras

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  4. 由任意二叉树的前序遍历序列和中序遍历序列求二叉树的思想方法_算法与数据结构基础 - 二叉树(Binary Tree)...

    二叉树基础 满足这样性质的树称为二叉树:空树或节点最多有两个子树,称为左子树.右子树, 左右子树节点同样最多有两个子树. 二叉树是递归定义的,因而常用递归/DFS的思想处理二叉树相关问题,例如Leet ...

  5. c++ 结构体遍历_二叉树(Binary Tree)的建立与遍历——C语言实现

    一.运行环境简介 编辑器:VSCode + MicroSoft原生插件; :cat:‍:dragon:运行环境: MinGW ; :cat:‍:bust_in_silhouette:常用指令: gcc ...

  6. 数据结构--二叉树 Binary Tree

    文章目录 1.概念 2.存储方式 2.1 链式存储(二叉树代码大部分是链式实现的) 2.2 顺序存储(基于数组) 3.二叉树的遍历 3.1 基于链表的二叉树实现代码 3.2 基于数组的二叉树实现代码 ...

  7. 【Algo】二叉树(Binary Tree)

    Backto Algo Index 先上代码, 定义 typedef struct TNode {ElemType data;TNode* lchild;TNode* rchild; } TNode, ...

  8. 【数据结构】二叉树(Binary Tree)

    目录 1 树的概念 1.1 树的定义 1.2 相关概念 2 二叉树的概念 2.1 二叉树的定义 2.2 二叉树的性质 2.3 特殊二叉树 2.3.1 满二叉树 2.3.2 完全二叉树 3 二叉树的储存 ...

  9. 编程基础 - 线索二叉树 (Threaded Binary Tree)

    编程基础 - 线索二叉树 (Threaded Binary Tree) 返回分类:全部文章 >> 基础知识 返回上级:编程基础 - 二叉树 (Binary Tree) 本文将介绍线索二叉树 ...

最新文章

  1. Unix系统编程()虚拟内存管理
  2. solidworks模板_SolidWorks文件属性分类和创建方法,图纸自动属性的基础
  3. 【Spring注解系列01】@Configuration与@Bean
  4. python 用户的画像可视化呈现技术_一人一车一面:解读汽车大数据用户画像背后的AI技术...
  5. tomcat路径配置详解
  6. 23. 二叉搜索树的后序遍历序列
  7. Linux 内核源码(kernel source)路径
  8. Java编程输出你的年龄和姓名
  9. 有限温度量子多体系统与热态张量网络
  10. Python-数值类型
  11. 十三香是什么,怎么用?
  12. 【高数】交换二次积分次序时,为什么要观察上下限大小关系?
  13. 搜狗泛站怎么做?搜狗泛域名泛目录收录方法
  14. 傅里叶变换、拉普拉斯变换、z变换之间的联系
  15. ERD Online 4.0.4 元数据在线建模(免费、私有部署)
  16. [导入]微软.net精简框架常见问题及回答(中文版)
  17. 领域知识图谱落地实践中的问题与对策
  18. 安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon
  19. 异性交往,高情商的女人,常用这3种方法抓住男人的心
  20. 计算机网络实验三 ARP原理与ARP欺骗 实验报告

热门文章

  1. python代码学习
  2. 将一个八位的二进制数转换为十进制数
  3. python--Django网站开发(1)
  4. wps怎么加高亮_这些WPS表格小技巧可以在工作中省力N倍!
  5. 面试最后我一般会问面试官什么问题
  6. 框架技术----Spring介绍
  7. js将字符串按照逗号分割
  8. 僵尸物联网大战区块链
  9. html ajax实现ntlm,jquery – 在一个页面上通过AJAX POST获取NTLM挑战
  10. ubuntu petalinux 2018 安装操作说明