二叉树(理论篇)

本文介绍了二叉树的基本概念,特别强调了二叉树的性质。内容包括二叉树的定义,以及如何通过递归和非递归方式实现相关操作。欲了解详细代码实现,可查阅后续的《递归实现和非递归实现》。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



二叉树:

         二叉树是每个节点最多有两个子树的树结构

1.二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),
2.二叉树的子树有左右之分,次序不能颠倒。
3.二叉树的第i层至多有2^(i-1)个结点;深度为k的二叉树至多有2^k-1个结点;
4.对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。

满二叉树:
          一棵深度为k,且有2^k-1个节点, 除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。



完全二叉树: 若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,
                      第h层有 叶子结点 ,并且叶子结点都是从左到右依次排布,这就是 完全二叉树
平衡二叉树:平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以
                  下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是
                  一棵平衡二叉树


二叉树性质

(1) 在非空二叉树中,第i层的结点总数不超过
 2^(i -1)
, i>=1;
(2) 深度为h的二叉树最多有2*h-1个结点(h>=1),最少有h个结点;
(3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;
(4) 具有n个结点的 完全二叉树的深度为
 log2(n +1)
(5)有N个结点的 完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:
若I为结点编号则 如果I>1,则其父结点的编号为I/2;
如果2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N,则无左儿子;
如果2*I+1<=N,则其右儿子的结点编号为2*I+1;若2*I+1>N,则无右儿子。









设L、D、R分别表示遍历左子树、访问根结点和遍历右子树,
则对一棵二叉树的遍历有三种情况:
DLR(称为先根次序遍历):      A B D E C F
LDR(称为中根次序遍历):      D B E A F C
LRD (称为后根次序遍历):     D E B F C A

代码实现可以参考下篇

《递归实现和非递归实现》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值