码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 树和二叉树的定义


    目录

    一、树的定义

    1.1概念

    1.2表示方式

    1.3基本术语

    1.4树结构和线性结构的比较

    二、二叉树的定义

    2.1概念

    2.2二叉树的5种基本形态

    三、二叉树的性质和存储结构

    3.1二叉树的性质

    3.1.1满二叉树

     3.1.2完全二叉树

    3.2二叉树的存储结构

    3.2.1二叉树的顺序存储

    3.2.2二叉树的链式存储


    一、树的定义

    1.1概念

    树是n(n>=0)个结点的有限集,

    若n=0,称为空树;若n>0,则有且仅有一个特定的称为根的结点,其余结点可分为m(m>=0)个互不相交的有限集T1,T2,....,Tm,其中每一个集合本身又是一棵树,并称为根的子树。

    1.2表示方式

    树状图、嵌套集合、凹入表示

     1.3基本术语

     无序树:树中结点的各子树无次序。

    1.4树结构和线性结构的比较

     线性结构:一对一;树结构:一对多

    二、二叉树的定义

    2.1概念

    二叉树是n(n>=0)个结点的有限集,它或者是由空集(n=0)或着由一个根结点及两棵互不相交的左子树和右子树组成。

    特点:

    ①不存在度大于2的结点

    ②子树有左右之分,次序不能颠倒

    ③二叉树可以是空集合,根可以有空的左子树或空的右子树

    ·注:二叉树≠树

    2.2二叉树的5种基本形态

    三、二叉树的性质和存储结构

    3.1二叉树的性质

    性质一:在二叉树的第i层上至多有(2^(i-1))个结点(i>=1)

    问:第i层上至少有1个结点

    性质二:深度为k的二叉树至多有(2^k-1)个结点(k>=1)

    问:深度为k时至少有k个结点

    性质三:对任何一棵二叉树T,叶子数为n0,度为2的结点数为n2,则n0=n2+1

    3.1.1满二叉树

    一棵深度为k且有(2^k-1)个结点的二叉树称为满二叉树

    特点:

    ①每一层上的结点数都是最大结点数

    ②叶子结点全部在最底层

    (满二叉树在同样深度的二叉树中结点个数和叶子结点个数最多)

    编号原则:

    从根结点开始,自上而下,自左而右

     3.1.2完全二叉树

    深度为k的具有n个结点的二叉树,当且仅当其每一个结点都与满二叉树中编号为1~n的结点一一对应时,称为完全二叉树

    判断下列是否为完全二叉树

    注:在满二叉树中,从最后一个结点开始,连续去掉任意个结点,就是一棵完全二叉树,一定是连续的去掉!

    特点:

    ①叶子只可能分布在层次最大的两层上

    ②对任一结点,如果其右子树的最大层次为i,那么其左子树的最大层次必为i或i+1

    ·注:满二叉树一定是完全二叉树,二叉树不一定是满二叉树

    性质四:具有n个结点的完全二叉树的深度为[log2(n)]+1 ([x]:表示不大于x的最大证书)

    性质五:如果对一棵有n个结点的完全二叉树(深度为[log2(n)]+1)的结点按层序编号,则对任一结点i(1<=i<=n),有:

    3.2二叉树的存储结构

    3.2.1二叉树的顺序存储

    实现:按满二叉树的结点层次编号,依次存放二叉树中的数据元素

    适用情况:满二叉树和完全二叉树

    3.2.2二叉树的链式存储

    存储结构

    ①二叉链表:寻找后继

    问:在n个结点的二叉链表中,有(n+1)个空指针域

    n个结点,有2n个链域,除根结点外,每个结点有且仅有一个双亲,所以只会有n-1个结点的链域存放指针,指向非空子女结点,那么空指针域则为(2n-(n-1))=n+1个

    ②三叉链表:寻找前驱和后继

     

  • 相关阅读:
    Ubuntu中使用yum命令出现错误提示:Command ‘yum‘ not found, did you mean:
    Elasticsearch学习系列二(基础操作)
    欧拉计划第265题:二进制圈
    Java字符串拼接(连接)
    一文轻松掌握深度学习框架中的einsum
    2023华数杯数学建模A题2023华数杯A 题隔热材料的结构优化控制研究
    linux c语言密码验证
    Sophus安装
    Ubuntu 22.04‘Temporary failure resolving‘ 解决方案
    爬虫之requests库
  • 原文地址:https://blog.csdn.net/2301_80034711/article/details/139868859
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号