二叉树是一种特殊的树,最直观地体现于它的每个节点至多有两个子节点。二叉树是非常实用的一种数据结构,常常用于实现二叉查找树及二叉堆等,使得数据的存储和搜索效率大大提高。
每个二叉树的节点至多有两棵子树,它们又分为左子树和右子树。根据这种特性,可以把二叉树的形态分为 5 种,如图 1 所示。
图 1:不同的二叉树
二叉树的性质
了解了二叉树的主要性质后,对建立和使用二叉树以及求解相关题目都十分有用。下面就介绍二叉树的几条主要性质以及它们的证明。
1) 在二叉树的第 i 层上至多有 2i-1 个节点,i ≥1
当 i=1 时,树中只有一个根节点,2i-1=20=1。每多一层,这一层的最大节点数就是前一层的两倍。比如说,第 i-1 层有 2(i-1)-1 个节点,而第 i 层有 2i-1 个节点,恰好等于第 i-1 层节点的两倍,2×2(i-1)-1=2i-1。
2) 深度为 k 的二叉树中至多有 2k-1 个节点
由性质(1)可得,第 i 层上至多有 2i-1 个节点。那么,深度为 k 的树中节点数最大时即为每一层都达到最大节点数时。此时,树中节点的总数为 20+21+22+…+2k-1=2k-1(个)。
3) 非空二叉树上叶子节点的数量等于双分支节点的数