二叉树的性质

二叉树性质

本篇博客为我在上课的思考以及重要概念的总结 — 谨慎参考

1. 树是线性结构还是非线性结构?

要想解答这个问题我们先要知道什么是线性结构

线性结构简单来说就是前驱后继为一对一的结构(比如,数组,队列,栈)
那么非线性结构就是前驱后继不为一对一的结构,比如一对多或多对多

那么树很明显前驱后继是一对多的关系,则结论是 : 树是非线性结构

2. 二叉树的性质

2. 1 简要概述树的基本概念

  1. 根节点 : 没有 前驱节点 的 节点
  2. 节点的度 : 节点拥有的 子树 的 数量
  3. 树的度 : 节点中 度 的 最大值
  4. 叶子节点 : 没有后继 的 节点
  5. 树的高度 : 这个树 有 几层

2. 2 简要概述二叉树的性质(重点)

性质1 : 在二叉树的第i层最多2i-1 个节点 最少1个节点
image-20220323193713099
性质2 : 高度为k的二叉树最多2k -1 个节点,最少k个节点
image-20220323194731874

性质3 : (n0)二叉树叶子节点数 = (n2) 度为2的节点数+ 1

性质3

2.3 特殊的二叉树

  1. 满二叉树 : 高度为k且有2k-1个节点也就是说叶子节点一个不少
  2. 完全二叉树 : 从左往右数满二叉树的编号,编号和节点一一对应的就是完全二叉树
    • 叶子只能分布在层次最大的两层上
    • 左右子树的层数差最大为1
3.二叉树的存储形式
4. 二叉树的遍历顺序
  1. 前序 : 根 -> 左 -> 右
  2. 中序 : 左 -> 根 -> 右
  3. 后序 : 左 -> 右 -> 根
5. 二叉树的应用

dfs 递归搜索树

### 二叉树的定义 二叉树是一种特殊的树形数据结构,其定义为 \( n \geq 0 \) 的有限节点集合。当 \( n = 0 \) 时,该二叉树为空;否则,它由一个根节点两个互不相交的子树组成,这两个子树分别被称为左子树右子树[^1]。 --- ### 基本性质 以下是关于二叉树的一些重要性质: #### 性质一:节点数量与层次的关系 对于任意一颗二叉树,如果它的最大层数(深度)为 \( k \),那么这颗二叉树最多可以拥有 \( 2^{k} - 1 \) 个节点[^3]。这里需要注意的是,层号通常从 1 开始计数。 #### 性质二:叶子节点的数量关系 设某二叉树中有 \( N_0 \) 表示度为 0 的节点数目(即叶节点),\( N_2 \) 表示度为 2 的节点数目,则存在如下关系: \[ N_0 = N_2 + 1 \] 这一结论可以通过归纳法证明得出。 #### 性质三:满二叉树的特点 所谓满二叉树是指除最后一层外每一层上的所有结点都有两个子结点,并且最底层的结点都集中在该层最左边的位置上的一类特殊形式的二叉树。具体来说,在这种情况下不会出现任何度为 1 的中间状态节点。 #### 性质四:完全二叉树特性描述 完全二叉树除了满足上述条件之外还额外规定了最后那层剩余未填满的部分也必须按照从左至右排列填充完毕为止才算是完整的形态。 ```python class TreeNode: def __init__(self, value=0, left=None, right=None): self.value = value self.left = left self.right = right def count_nodes(root: TreeNode) -> int: if not root: return 0 return 1 + count_nodes(root.left) + count_nodes(root.right) # Example usage of the function to demonstrate node counting. root = TreeNode(1) root.left = TreeNode(2) root.right = TreeNode(3) print(count_nodes(root)) # Output will be 3 as per example tree structure defined here. ``` 以上代码片段展示了如何通过递归方法计算给定二叉树中的总节点数。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值