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


    二叉树

    特点:

    1. 每个节点的度最大为2(最多拥有2棵子树)
    2. 左子树和右子树是有顺序的
    3. 即使某节点只有一颗子树,也要区分左右子树

    性质:

    1. 非空二叉树的第i层,最多有2的i-1次方个节点(i大于等于1)
    2. 在高度为h的二叉树上最多有2的h次方-1个结点(h大于等于1)
    3. 对于任何一颗非空二叉树,如果叶子节点个数为n0,度为2的节点个数为n2,则有:n0=n2+1

    真二叉树(Proper Binary Tree)

    真二叉树:所有节点的度都要么为0,要么为2

    image-20220903103320983

    满二叉树(Full Binary Tree)

    满二叉树:所有节点的度都要么为0,要么为2。且所有的叶子节点都在最后一层

    image-20220903103602397

    • 在同样高度的二叉树中,满二叉树的叶子节点数量最多、总节点数量最多
    • 满二叉树一定是真二叉树,真二叉树不一定是满二叉树

    假设满二叉树的高度为h(h大于等于1):

    第i层的节点数量:2的i-1次方

    叶子节点数量:2的h-1次方

    总节点数量:2的h次方-1

    完全二叉树(Complete Binary Tree)

    完全二叉树:叶子节点只会出现最后2层,且最后1层的叶子结点都靠左对齐

    image-20220903104454682

    • 完全二叉树从根结点至倒数第2层是一颗满二叉树
    • 满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树

    完全二叉树的性质

    • 度为1的节点只有左子树

    • 度为1的节点要么是1个,要么是0个

    • 同样节点数量的二叉树,完全二叉树的高度最小

    • 假设完全二叉树的高度为h(h对于等于1):

      • 至少有2的h-1次方个节点
      • 最多有2的h次方-1个节点
      • 总节点数量为n:h=floor(log2n)+1
    • 一颗有n个节点的完全二叉树(n>0),从上到下、从左到右对节点从1开始进行编号,对任意第i个节点

      • 如果i=1,它是根节点
      • 如果i>1,它的父节点编号为 floor(i/2)
      • 如果2i小于等于n,它的左子节点编号为2i
      • 如果2i>n,它无左子节点
      • 如果2i+1小于等于n,它的右子节点编号为2i+1
      • 如果2i+1>n,它无右子节点
    • 一颗有n个节点的完全二叉树(n>0),从上到下、从左到右对节点从0开始进行编号,对任意第i个节点

      • 如果i=0,它是根节点
      • 如果i>0,它的父节点编号为 floor((i-1)/2)
      • 如果2i+1小于等于n-1,它的左子节点编号为2i+1
      • 如果2i+1>n-1,它无左子节点
      • 如果2i+2小于等于n-1,它的右子节点编号为2i+2
      • 如果2i+2>n-1,它无右子节点

    image-20220903145142259

  • 相关阅读:
    深入篇【C++】总结<lambda表达式>与<包装器和bind>的使用与意义
    TypeScript在React中的优雅写法
    迈动互联IBMS产品一项技术获国家专利
    爆肝一个月,从博物馆到自然景区,整合了100个值得逛的3D游园景点,让你足不出户玩转中秋!
    【问题思考总结】CPU怎么访问磁盘?CPU只有32位,最多只能访问4GB的空间吗?
    gcc安装问题总结
    dvwa-暴力破解(low-high)
    Python通过setup.py安装的模块怎么卸载
    SparkSQL【核心编程、使用IDEA开发、用户自定义函数】
    【MCAL_CANDriver】-1.4-Tq与Bit Rate,Sync_Seg,Prop_Seg,Phase_Seg1, Phase_Seg2之间的关系
  • 原文地址:https://blog.csdn.net/weixin_42403632/article/details/126905644
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号