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

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

这是一个特殊的二叉树,一个节点都没有,是个空的,很特殊吧。
- 有根但无子树

看,这个也是特殊的二叉树只有根节点,没有子节点。
- 根左/右子树

这个树有一个根节点一个子节点,很好看吧 !
- 根左右子树

也可以叫满二叉树。
二叉树遍历
二叉树遍历就是指沿着二叉树某条路径,然后将路径上的点做一次一次的访问。
其次,由二叉树访问节点的遍历,有以下的结构
- 前序遍历(先序遍历)
访问根节点的操作发生在遍历其左右子树之前。
- 访问根结点。
- 前序遍历左子树。
- 前序遍历右子树 。
for(int i=1;i<=n;i++){
if(tot[i][0]==x){
cout<<x;
f(tot[i][1]);
f(tot[i][2]);
}
}
- 中序遍历
访问根节点的操作发生在遍历其左右子树之中。
- 访问根结点。
- 中序遍历左子树。
- 中序遍历右子树 。
for(int i=1;i<=n;i++){
if(tot[i][0]==x){
f(tot[i][1]);
cout<<x;
f(tot[i][2]);
}
}
- 后序遍历
访问根节点的操作发生在遍历其左右子树之后。
- 访问根结点。
- 中序遍历左子树。
- 中序遍历右子树 。
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&

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

被折叠的 条评论
为什么被折叠?



