二叉树性质盘点

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

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

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

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

二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 直线段检测法(LSD)

    直线段检测法(LSD)直线段检测法(LSD)1简介2算法介绍3.算法简述感谢观看:)本文仅用于个人学习/复习1简介LSD是一种线段检测算法,该方法号称是能在线性时间(linear-time)内得到亚像素级准确度的直线段检测算法。LSD的目标在于检测图像中局部的直的轮廓,这也是我们称之为直线分割的原因。2算法介绍LSD直线检测方法首先计算每个像素点的水平线(level-Line)角度,从而形成了一个水平线场,即单位矢量场,这里像素点的水平线角度就是该点梯度方向的垂直角度,如下图所示,而水平线场就是一个与图像中的点一一对应

    2022年4月30日
    48
  • 语义分割总结_细粒度语义分割

    语义分割总结_细粒度语义分割图像分割算法总结1.评价指标:普通指标:PixelAccuracy(PA,像素精度):标记正确的像素点占所有像素点的比例。混淆矩阵中=\(\frac{{\rm{对角线}}}{总和}\)Mea

    2022年8月5日
    4
  • Redis面试总结

    Redis面试总结

    2021年10月27日
    39
  • Linux日志管理「建议收藏」

    Linux日志管理「建议收藏」一、日至来源日至由程序产生,存储在内存条中1、日志的查看&gt;/nar/log/messages                ##清空目录内容cat/var/log/messages              ##查看日志systemctlstartrsyslog.service    ##加载日志收集/var/log/secure         …

    2022年6月8日
    38
  • Linux网络下载管理工具(lftp, ftp, lftpget, wget)「建议收藏」

    Linux网络下载管理工具(lftp, ftp, lftpget, wget)「建议收藏」网络客户端管理工具在Linux中,通常用网络客户端管理工具实现文件的下载与上传,主要有以下几种,分别为lftp工具,ftp工具,lftpget工具,wget工具,在centos7中,要尽量学会lftp,lftpget等工具,下面多这些工具的简单使用逐一介。lftp使用命令manlftp可查看其具体的使用方法,如果lftp工具未安装,使用yuminstalllftp命令进…

    2022年5月29日
    40
  • pycharm激活码2021最新破解方法

    pycharm激活码2021最新破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    55

发表回复

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

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