数据结构——树与二叉树

169 阅读3分钟

第四章 树与二叉树

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