python 二叉树详解

二叉树是一种特殊的树,最直观地体现于它的每个节点至多有两个子节点。二叉树是非常实用的一种数据结构,常常用于实现二叉查找树及二叉堆等,使得数据的存储和搜索效率大大提高。

每个二叉树的节点至多有两棵子树,它们又分为左子树和右子树。根据这种特性,可以把二叉树的形态分为 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) 非空二叉树上叶子节点的数量等于双分支节点的数

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值