数据结构--树与二叉树

树的相关概念及术语

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

练习题:求树中叶子结点的方法

在这里插入图片描述
解:
**求树中叶子结点的方法:**sum(node)=sum(分支)+1
sum(分支)=度的数目 * 结点数目
设叶子结点的数目为x,
建立等式:3+4+5+2+x=4 * 3+3 * 4+2 * 5+1 * 2+0 * x+1
解得x为23

二叉树的定义,性质以及存储结构

在这里插入图片描述
在这里插入图片描述
注意:二叉树不是树(n=0的时候为空二叉树,而树要求n!=0)二叉树是一种树形结构度为2.
在这里插入图片描述

二叉树的性质

性质很重要,背下来
在这里插入图片描述

练习题:求二叉树的总结点数

在这里插入图片描述
方法:叶子结点数=度为2的结点数+1
设叶子结点为n0;

n0=20;//此处为叶子结点数,即度为0
n1=10+15=25;//此处求出只有左孩子或右孩子的结点数,即度为1
n2=n0-1=19;//此处求出度为2的结点数
所以:n=n0+n1+n2=64

满二叉树

在这里插入图片描述

完全二叉树的定义

在这里插入图片描述

完全二叉树的性质

注:完全二叉树,最多有一个度为一的结点。

在这里插入图片描述
特别注意此处的向下取整符号

练习题:求完全二叉树叶子结点数

在这里插入图片描述
解:根据性质5第三条,结点为100的完全二叉树,其父结点编号为最多到50,所以从51到100都是叶子结点。

练习题2
在这里插入图片描述
解:
(1)由于第六层为满二叉树所以前六层共有结点=2^6-1=63个//性质二:高度为k的二叉树,总结点数<=s ^ k -1,k为层数
之后再加上第七层的结点数
所以总共结点数为=2^6-1+10=73个
(2)方法一详解:
编号为73的叶子结点其父结点为73/2向下取整为36,所以从37开始就都为叶子结点

二叉树的存储

顺序存储
在这里插入图片描述
在这里插入图片描述
动态二叉链表
在这里插入图片描述
在这里插入图片描述
二叉链表中有n个结点,则其含有n+1个空指针
在这里插入图片描述

二叉树的遍历

在这里插入图片描述

先序,中序,后序遍历

在这里插入图片描述
解:
先序为:ABCDEFGHI
中序为:CDBEFAHGI
后序为:DCFEBHIGA
在这里插入图片描述

根据序列还原二叉树

在这里插入图片描述
方法: 先确定根节点(先序为第一个字母,后序为最后一个字母),在根据不同序列之间对比,将剩下的元素写为子树,之后按照同样地方法确定根节点。
在这里插入图片描述

遍历算法

在这里插入图片描述
在这里插入图片描述

遍历算法的应用~求给定二叉树的高度

在这里插入图片描述
在这里插入图片描述
求高度的关键是运用递归算法

设计算法求二叉树的结点数

在这里插入图片描述
在这里插入图片描述

设计算法求叶子结点数

在这里插入图片描述
在这里插入图片描述

练习题:非递归输出最后一个结点

在这里插入图片描述

二叉链表转化为顺序链表

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值