【树形数据结构】二叉树&堆

本文介绍了二叉树的不同类型,包括空二叉树、有根无子树、根左/右子树以及满二叉树。详细讲解了二叉树的遍历方式:前序、中序和后序遍历。接着阐述了完全二叉树的定义、性质和判定方法,以及满二叉树的特性。最后,讨论了堆的结构,包括大根堆和小根堆,堆的操作如插入、删除以及堆排序的应用。

二叉树&堆


树是一种非线性数据结构,在图中使用分支关系组成的结构,它的子树通常按照左右分为左子树和右子树,父子节点和儿子节点都是其中的元素,如下图:

当然,后面我会写满二叉树,这也是一个满二叉树,我后面会写。

二叉树类型

  • 空二叉树

在这里插入图片描述
这是一个特殊的二叉树,一个节点都没有,是个空的,很特殊吧。

  • 有根但无子树

在这里插入图片描述
看,这个也是特殊的二叉树只有根节点,没有子节点。

  • 根左/右子树

在这里插入图片描述
这个树有一个根节点一个子节点,很好看吧

  • 根左右子树

在这里插入图片描述
也可以叫满二叉树。

二叉树遍历

二叉树遍历就是指沿着二叉树某条路径,然后将路径上的点做一次一次的访问。

其次,由二叉树访问节点的遍历,有以下的结构

  • 前序遍历(先序遍历)

访问根节点的操作发生在遍历其左右子树之前。

  1. 访问根结点。
  2. 前序遍历左子树。
  3. 前序遍历右子树 。
for(int i=1;i<=n;i++){
			if(tot[i][0]==x){
			cout<<x;
				f(tot[i][1]);
				f(tot[i][2]);
			}
		}
  • 中序遍历

访问根节点的操作发生在遍历其左右子树之中。

  1. 访问根结点。
  2. 中序遍历左子树。
  3. 中序遍历右子树 。
for(int i=1;i<=n;i++){
			if(tot[i][0]==x){
				f(tot[i][1]);
				cout<<x;
				f(tot[i][2]);
			}
		}
  • 后序遍历

访问根节点的操作发生在遍历其左右子树之后。

  1. 访问根结点。
  2. 中序遍历左子树。
  3. 中序遍历右子树 。
for(int i=1;i<=n;i++){
			if(tot[i][0]==x){
				f(tot[i][1]);
				f(tot[i][2]);
				cout<<X;
			}
		}

二叉树-列题

P1305 新二叉树
这道题,十分怪,让你输出二叉树,所以,二叉树吗,就直接找就行了。——没什么用。
因为是前序排列的二叉树,所以只需遍历左右二叉树就可以了。按照前给的模板。

#include<bits/stdc++.h&
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值