数据结构——树与二叉树

本文详细介绍了树的基本概念,包括结点、有序与无序数,以及树和森林的性质。着重探讨了二叉树的定义、状态、存储结构,各种遍历方法如先序、中序和后序,以及线索二叉树的原理和操作。
摘要由CSDN通过智能技术生成

第四章 树与二叉树

4.1 树的基本概念

1. 树的定义和基本术语

image-20231111215821288

image-20231111215907696

  • 除根节点外,任何一个结点都有且仅有一个前驱
1)树的基本概念

image-20231111220019758

2)结点、树的属性描述

image-20231111220200926

3)有序数和无序数

有序数:逻辑上看,树中结点的各子树从左至右是有次序的,不能互换

无序树:逻辑上看,树中结点的各子树从左至右是无次序的,可以互换

4)树和森林

image-20231111220603671

2.树的性质

image-20231111221450617

1)常见考点
考点1:结点数=总度数(总分支) + 1
考点2:度为m的树、m叉树的区别;

image-20231111221751657

考点3:
考点4:

image-20231111221934109

image-20231111221922220

考点5
考点6

image-20231111222104755

image-20231111222302854

4.2 二叉树的概念

1. 二叉树的定义和基本术语

image-20231111231255422

1)二叉树的基本概念

image-20231111231355581

二叉树是递归定义的数据结构

2)二叉树的五种状态

image-20231111231539308

3)特殊的二叉树

完全二叉树:如果某个结点有一个孩子,那么一定是左孩子。

image-20231111232006779


image-20231111232456593


image-20231111232629389

2. 二叉树常考性质

image-20231113151319914

1)二叉树常见考点
考点1

image-20231113151548416

考点2

image-20231113151728836

考点3

image-20231113151753899

2)完全二叉树常见考点
考点1

image-20231113152059584

image-20231113152124875

考点2

image-20231113152153491

3) 二叉树的存储结构

image-20231113154153586

image-20231113154308774

1-> 二叉树的顺序存储

image-20231113154625465

基本操作

image-20231113154713419

判断非完全二叉树左右孩子是否为空

  • 无法使用完全二叉树的方法进行判断
  • 如果isEmpty == ture则为空

image-20231113155254381

最坏的情况:高度为h且只有h个结点的单支树(所有结点只有右孩子),也至少需要2的h次方再减一个存储单元

结论:二叉树的顺序存储结构,只适合存储完全二叉树。

2-> 二叉树的链式存储

image-20231113160404838

代码实现

image-20231113160449536

这样的方法找到指定结点p的左右孩子——只能从根开始遍历寻找

image-20231113160944589

3. 二叉树的遍历和线索二叉树

1)二叉树的先中后序遍历

image-20231113163954026

遍历:按照某种次序把所有结点都访问一遍。

层次遍历:基于树的层次特性确定的次序规则。

先/中/后序遍历:基于树的递归特性确定的次序规则。

2)二叉树的递归特性

image-20231113164631908

练习

image-20231113164806104

image-20231113164822176

3)先序遍历(代码)

image-20231113165035666

//中序遍历
void Pre0rder(BiTres T){
	if(T!=NULL){
		Pre0rder(T->lchild);
		visit(T);
		Pre0rder(T->rchild);
	}
}
//后序遍历
void Pre0rder(BiTres T){
	if(T!=NULL){
		Pre0rder(T->lchild);
		Pre0rder(T->rchild);
		visit(T);
	}
}

image-20231113165455029

空间复杂度:O(h)

image-20231113165649107

eg:

image-20231113165720715

4. 二叉树的层次遍历

image-20231113172329018

1)算法思想

image-20231113172453903

2)代码实现

image-20231113172610327### 3. 由遍历序列构造二叉树

image-20240505221156899

image-20240505221246312

image-20240505221438748

image-20240505221503199

image-20240505221608853

image-20240505221635447

image-20240505221707831

image-20240505221732338

image-20240505221757752

image-20240505221821123

image-20240505221853201

4. 线索二叉树的概念

image-20240506204712696

image-20240506204756285

image-20240506205254760

image-20240506205332287

image-20240506205431762

image-20240506205444554

5.二叉树的线索化

image-20240506210047500

image-20240506210502695

image-20240506210544045

image-20240506210618298

image-20240506210712033

image-20240506210952622

image-20240506211016079

image-20240506211045856

image-20240506211101724

image-20240506211119137

image-20240506211136790

image-20240506211206410

6. 在线索二叉树中找前驱后继

image-20240506211445311

image-20240506211614745

image-20240506211640653

image-20240506211707067

image-20240506211740792

image-20240506211804763

image-20240506211836555

image-20240506211901222

image-20240506211922917

image-20240506211944367

image-20240506212229334

image-20240506212317611

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值