树与二叉树--树的性质

一、普通树的基本性质

1.树中的结点数 = 总度数 + 1

  • 每条边对应一个度数

  • 根结点没有父结点,所以少一条边

  • 公式:n = 总度数 + 1

  1. 度为 m 的树(m 叉树)第 i 层最多结点数
  • 第 1 层:1 个

  • 第 2 层:m 个

  • 第 3 层:m² 个

  • 第 i 层最多:m^(i-1)个结点

  1. 高度为 h 的 m 叉树最多结点数

-(m^h-1)/(m-1)

  1. 高度 h 与最少结点数
  • 每层至少 1 个结点

  • 最少结点数:h


二、二叉树的重要性质

性质 1

二叉树第 i 层上最多有 2^(i−1)个结点

(i ≥ 1)

性质 2

深度(高度)为 k的二叉树最多有 2^k − 1 个结点

(满二叉树)

性质 3

对任意一棵二叉树:

叶子结点数 n₀ = 度为 2 的结点数 n₂ + 1

即:

n_0 = n_2 + 1

性质 4

具有度为m,有 n 个结点的完全二叉树高度:

h = log_2(n(n(m-1)+1)

性质 5(完全二叉树父子下标关系)

对按层序编号 1~n 的完全二叉树:

  • 结点 i 的左孩子:2i

  • 结点 i 的右孩子:2i + 1

  • 结点 i 的父结点:⌊i/2⌋

  • 叶子结点一定在最后一层或倒数第二层


三、满二叉树 & 完全二叉树 区别与性质

  1. 满二叉树
  • 每一层都达到最大结点数

  • 高度 k,结点总数:2^k − 1

  • 所有叶子都在最底层

  • 只有度为 0 和度为 2 的结点,没有度为 1 的结点

  1. 完全二叉树
  • 除最后一层外,每层都满

  • 最后一层结点靠左连续排列

  • 最多只有一个度为 1 的结点,且一定只有左孩子

  • 是顺序存储(数组)的最佳结构


四、二叉树 vs 度为 2 的有序树

  • 二叉树是严格有序:左孩子≠右孩子,交换即不同树

  • 度为 2 的普通树:子树不分左右,只看个数

  • 二叉树可以空树、只有左子树、只有右子树

  • 普通树至少 1 个结点(非空定义)


五、树、二叉树、森林之间的转换规律

1.树 ↔ 二叉树

  • 左孩子:原树的第一个孩子

  • 右孩子:原树的兄弟结点

  1. 森林 ↔ 二叉树
  • 每棵树转为二叉树

  • 依次把后一棵树的根作为前一棵树的右孩子

  1. 转换后性质
  • 树的先根遍历= 对应二叉树先序遍历

  • 树的后根遍历 = 对应二叉树中序遍历


六、高度、深度、层数的统一说明

  • 根结点层数 = 1

  • 结点深度 = 层数

  • 树的高度 = 最大层数

  • 叶子高度 = 1

  • 空树高度 = 0


七、快速记忆口诀

  1. 树结点数 = 总度数 + 1

  2. 二叉树第 i 层最多 2^(i−1)

  3. 满二叉树总数 2^k − 1

  4. 叶子数 = 度2结点数 + 1

  5. 完全二叉树高度 ⌊log₂n⌋ + 1

  6. 完全二叉树下标:左2i、右2i+1、父i/2

相关推荐
Lucky_ldy16 小时前
数据结构从入门到精通:顺序表
数据结构·链表
熬夜敲代码的猫16 小时前
AVL树(C++详解版)
数据结构·c++·算法
并不喜欢吃鱼17 小时前
从零开始 C++-----十一【C++ 数据结构】红黑树全解析:从定义到工程实现(一文搞定,十分详细)
开发语言·数据结构·c++
星恒随风17 小时前
C语言数据结构排序算法详解(上):从插入排序、希尔排序到选择排序、堆排序
c语言·数据结构·笔记·学习·排序算法
迈巴赫车主17 小时前
蓝桥杯21247弹跳鞋java
java·开发语言·数据结构·算法·职场和发展·蓝桥杯
Cthy_hy18 小时前
Python算法竞赛:集合去重+字典映射 核心用法一站式整理
数据结构·python·算法
happymaker062618 小时前
LeetCodeHot100——盛水最多的容器
数据结构·算法·leetcode·双指针·hot100
过期动态18 小时前
【LeetCode 热题 100】三数之和
java·数据结构·算法·leetcode·职场和发展·排序算法
一切皆是因缘际会18 小时前
AI高速迭代下的技术风险与理性突围
大数据·数据结构·人工智能·架构
代码中介商19 小时前
B+树:数据库索引的终极奥秘
数据结构