二叉树相关

二叉树

定义

二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点。(来自百度百科)

性质

  • 二叉树的第i层至多有2^(i-1)个结点
  • 深度为h的二叉树至多有2^h-1个结点
  • 任意一个二叉树中,叶子结点数=度为2的结点数+1
  • 任意一个拥有n个结点的完全二叉树,高度为floor(log2(n))+1,其中floor(x)为向下取整函数
  • 对于任意一个完全二叉树,第i号结点的父结点为i/2,左子结点为2i,右子结点为2i+1

完全二叉树

 

 深度为h的二叉树,除了第h层外,其他层均包含该层所能拥有的最多结点数量,这个二叉树叫做完全二叉树,如上图所示。

满二叉树

在完全二叉树的基础上,第h层也有该层所能拥有的最多结点数,此时为满二叉树,如上图所示。

此时结点数n=2^(层数k)-1。

遍历

 如图的二叉树

先序遍历

中左右

A->B->D->E->F->G->C

其中加粗的是A的左子树,红色是B的右子树,可以看出需要遍历完整个子树后才开始遍历下一部分。

中序遍历

左中右

D->B->F->E->G->A->C

后序遍历

左右中

D->F->G->E->B->C->A

其中由前序遍历和中序遍历可得到唯一二叉树,因为前序遍历可确定结点父子关系,中序遍历可确定左右树顺序。

例如给出前序遍历结果A->B->D->C->E->F->G和中序遍历结果D->B->A->C->F->E->G

可知根结点为A,根结点的左子树有结点D、B,右子树有结点C、F、E、G

又可得D、B中B为根结点,D为左子结点,C、F、E、G中C为根结点,右子树有F、E、G

又可得F、E、G中F为根结点,E为左子结点,G为右子结点,故树如下图所示:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值