![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
树和二叉树
以数据结构树和二叉树部分为主题,实现常见的几种关于树的算法
Yozu_Roo
这个作者很懒,什么都没留下…
展开
-
【889. 根据前序和后序遍历构造二叉树】c++通俗理解版
889. 根据前序和后序遍历构造二叉树【题目描述】给定两个整数数组,preorder 和 postorder ,其中 preorder 是一个具有 无重复 值的二叉树的前序遍历,postorder 是同一棵树的后序遍历,重构并返回二叉树。如果存在多个答案,您可以返回其中 任何 一个。【示例 1】输入:preorder = [1,2,4,5,3,6,7], postorder = [4,5,2,6,7,3,1]输出:[1,2,3,4,5,6,7]【示例 2】输入: preorder = [1],原创 2022-03-04 16:06:19 · 538 阅读 · 0 评论 -
二叉排序树的构造与遍历
二叉排序树的构造与遍历//二叉排序树的构造与遍历/*763 90 70 55 67 42 98*/ #include <iostream>using namespace std;struct BiNode { int data; BiNode *lchild,*rchild;};int pre[100];int num;//二叉排序树的插入 BiNode *Insert(BiNode *bt,int x){ if(bt==NULL)//找到插入的位置 {原创 2021-04-20 16:33:49 · 339 阅读 · 0 评论 -
2021/4/5 完全二叉树的层序遍历 (25分)
【练习时间】2021/4/5【题目名称】L2-035 完全二叉树的层序遍历 (25 分)一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。输入格式:输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分原创 2021-04-05 09:53:39 · 576 阅读 · 0 评论 -
2021/3/28 树和二叉树 交换左右子树
【练习时间】2021/3/28【题目名称】 交换二叉树的左右子树输入数据:ABCD###E##F##输出数据:A F B E C D【代码分析】void ExchangeTree(BiNode *bt){ if(bt==NULL)return; else{ BiNode *temp=new BiNode; temp=bt->lchild; bt->lchild=bt->rchild; bt->rchild=temp; ExchangeTree(bt原创 2021-03-28 11:25:14 · 105 阅读 · 0 评论 -
2021/3/28 树和二叉树 已知后序遍历和中序遍历,求前序遍历
【练习时间】2021/3/28【题目名称】已知二叉树的后序遍历和中序遍历,求前序遍历详细的算法请参照我的另一篇博客2021/3/6 算法训练 绘制地图(已知数组先序和中序求后序序列)在这里我们只需要改变cur_pos的初始值和每次运行的操作即可我们知道后序遍历序列是左子树->右子树->根;所以我们需要先建立右子树而后建立左子树即可。cur_pos初始化为n-1,每次找到后自动减一,如果没找到加一,先建立右子树;【源代码】/*84 7 5 2 8 6 3 14 2 7 5 1原创 2021-03-28 10:58:44 · 346 阅读 · 0 评论 -
2021/3/16 求二叉树的宽度(易理解好实现)
【练习时间】2021/3/16【题目名称】求二叉树的宽度【问题描述】以二叉链表为存储结构,编写算法求二叉树的宽度(具有结点数最多的那一层上的节点个数)。【输入形式】两行,第一行是扩展二叉树的前序遍历序列。【输出形式】二叉树的宽度。【样例输入】AB#D##C##【样例输出】2【思路分析】我采用的思路是在构造树之后,设置该节点的孩子节点的个数,并将其一起封装起来存储到结构体中,然后采用层序遍历的方法,将该节点左孩子的孩子节点个数和该节点右孩子的孩子节点个数相加,与当前最大值比较,最终输出的最原创 2021-03-16 16:02:18 · 705 阅读 · 1 评论 -
2021/3/16 求二叉树中值为x的结点的层号
【练习时间】2021/3/16【题目名称】 求二叉树中值为x的结点的层号【问题描述】以二叉链表为存储结构,编写算法求二叉树中值为x的结点的层号。【输入形式】两行,第一行是扩展二叉树的前序遍历序列,第二行是待查询结点x【输出形式】值为x的结点所在层号。根结点所在层记为第1层。【样例输入】AB#D##C##D【样例输出】3【思路分析】我们首先会考虑到如果一个节点是某一个节点的左子树或右子树上的节点,那么这个节点的层数应该是上一个节点层数+1;但是当我们编译实现的时候发现,根节点的左右子原创 2021-03-16 15:38:09 · 2743 阅读 · 0 评论