二叉树性质盘点

二叉树性质盘点==========================================================================================基础部分

大家好,又见面了,我是你们的朋友全栈君。

=========================================================================================

基础部分
=========================================================================================
图论中的定义:

二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。如果不考虑连通性,允许图中有多个连通分量,这样的结构叫做森林。

=========================================================================================

二叉树常用术语:

结点 数据元素的内容及其指向其子树根的分支统称为结点。
结点的度 结点的分支数。
终端结点(叶子) 度为0的结点。
非终端结点 度不为0的结点。
结点的层次 树中根结点的层次为1,根结点子树的根为第2层,以此类推。
树的度 树中所有结点度的最大值。
树的深度 树中所有结点层次的最大值。
有序树、无序树 如果树中每棵子树从左向右的排列拥有一定的顺序,不得互换,则称为有序树,否则称为无序树。
森林 是m(m≥0)棵互不相交的树的集合。
在树结构中,结点之间的关系又可以用家族关系描述,定义如下:
孩子、双亲 结点子树的根称为这个结点的孩子,而这个结点又被称为孩子的双亲。 
子孙 以某结点为根的子树中的所有结点都被称为是该结点的子孙。
祖先 从根结点到该结点路径上的所有结点。
兄弟 同一个双亲的孩子之间互为兄弟。
堂兄弟 双亲在同一层的结点互为堂兄弟。
满二叉树:
如果一个深度为K的二叉树拥有2K-1个结点,则将它称为满二叉树。
完全二叉树:有一棵深度为h,具有n个结点的二叉树,若将它与一棵同深度的满二叉树中的所有结点按从上到下,从左到右的顺序分别进行编号,且该二叉树中的每个结点分别与满二叉树中编号为1~n的结点位置一一对应,则称这棵二叉树为完全二叉树。

=========================================================================================
二叉树的重要性质:

(1) 在二叉树中,第i层的结点总数不超过2^(i-1);
(2) 深度为h的二叉树最多有2^h-1个结点(h>=1),最少有h个结点;
(3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;
(4) 具有n个结点的完全二叉树的深度为int(log2n)+1
(5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:
若I为结点编号则 如果I>1,则其父结点的编号为I/2;
如果2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N,则无左儿子;
如果2*I+1<=N,则其右儿子的结点编号为2*I+1;若2*I+1>N,则无右儿子。
(6)给定N个节点,能构成h(N)种不同的二叉树。
h(N)为卡特兰数的第N项。h(n)=C(n,2*n)/(n+1)。
(7)设有i个枝点,I为所有枝点的道路长度总和,J为叶的道路长度总和J=I+2i

=========================================================================================

常用二叉树
二叉树常被用于实现二叉查找树(又叫二叉搜索树)和二叉堆。
二叉搜索树:
二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树;

C++实现二叉搜索树的常用操作

二叉堆:

之前我已经分析过二叉堆排序:

堆排序算法分析
堆 的取最值删除操作和插入操作

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138174.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月6日 上午10:20
下一篇 2022年5月6日 上午10:20


相关推荐

  • svm原理详细推导

    svm原理详细推导笔者在查阅了大量资料和阅读大佬的讲解之后 终于对 svm 有了比较深一点的认识 先将理解的推导过程分享如下 本文主要从如下五个方面进行介绍 基本推导 松弛因子 核函数 SMO 算法 小结五个方面以 为分隔 同时有些地方需要解释或者注意一下即在画有 符号的部分内 本文主要介绍的是理论 并没有涉及到代码 关于代码的具体实现 可以在阅读完本文 掌握了 SVM 算法的核心内容后去看一下笔者

    2026年3月19日
    2
  • java se与java 的区别_java se与java的区别是什么

    java se与java 的区别_java se与java的区别是什么Java是一门程序设计语言,它有三个版本,JavaSE(标准版)、JavaEE(企业版)和JavaME(微型版)。而JavaSE只是一个使用Java进行编程的规范、框架,它不是一门编程语言。JavaSE(javastandardedition),一般包括jdk、jre以及各种API文档等。JavaSE(JavaPlatform,StandardEdition)。JavaSE以…

    2022年7月9日
    28
  • 网页背景音乐代码

    网页背景音乐代码将这段代码插入到您的之间当您打开网站时即可听到背景音乐:这种当网页最小化之后,音乐会消失网页背景音乐的代码:1.mid表示音效文件上面的网页背景音乐代码可以加入FLASH动画的绝对地址(或相对地

    2022年7月2日
    31
  • Android性能分析工具“TraceView”,“Systrace UI”

    Android性能分析工具“TraceView”,“Systrace UI”TraceViewTra 是 AndroidSDK 自带的工具 用来分析函数调用过程 可以对 Android 的应用程序以及 Framework 层的代码进行性能分析 它是一个图形化的工具 最终会产生一个图表 用于对性能分析进行说明 可以分析到应用具体每一个方法的执行时间 使用可以非常直观简单 分析性能问题很方便 使用方法在使用 TraceVeiw 分析问题之前需要得到

    2026年3月17日
    5
  • atop用法_atop 使用详情

    atop用法_atop 使用详情atop 是一个功能非常强大的 linux 服务器监控工具 它的数据采集主要包括 CPU 内存 磁盘 网络 进程等 并且内容非常的详细 特别是当那一部分存在压力它会以特殊的颜色进行展示 如果颜色是红色那么说明已经非常严重了 ATOP 列 该列显示了主机名 信息采样日期和时间点 PRC 列 该列显示进程整体运行情况 sys usr 字段分别指示进程在内核态和用户态的运行时间 proc 字段指示进程总数 zombie 字

    2026年3月19日
    3
  • 人脸表情识别系统介绍——上篇(python实现,含UI界面及完整代码)

    人脸表情识别系统介绍——上篇(python实现,含UI界面及完整代码)摘要:这篇博文介绍基于深度卷积神经网络实现的人脸表情识别系统,系统程序由Keras,OpenCv,PyQt5的库实现,训练测试集采用fer2013表情库。如图系统可通过摄像头获取实时画面并识别其中的人脸表情,也可以通过读取图片识别,本文提供完整的程序文件并详细介绍其实现过程。博文要点如下:表情识别数据集、搭建表情识别的模型、数据增强的批量训练、系统UI界面的实现。点击跳转至博文涉及的全部文件下载页。

    2022年4月29日
    195

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号