二叉树与递归
Posted 陈伯爱学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树与递归相关的知识,希望对你有一定的参考价值。
以下是2.12晚上12点前说的话
https://www.bilibili.com/video/av31650553
虽然当科学家可能性不大了,但是发财总是有可能的,在这里出售一下原始股,价格面议。
本来想多写一些,奈何太难了,递归很难,树很难,结合到一起,我晕了,伪代码倒是挺好写的,实现就实现不出来了。
所以明天会做难一点的练习
题意:
给你先序遍历和中序遍历,求后序遍历。
2.13 凌晨1:06
#include<string>
#include<iostream>
using namespace std;
struct node {
int l;
int r;
char v;
}a[10000];
string first, mid;
void build(int l1, int r1, int l2, int r2)//构建一个二叉树 编号1是先序下标,编号2是中序下标 当前操作的恰好是a[l1]
{
int p = l2;
while (mid[p] != first[l1]) p++;
int cnt = p - l2;//左子树结点个数
a[l1].v = first[l1];
if (p > l2) a[l1].l = l1 + 1;
else a[l1].l = 0;
if (p < r2) a[l1].r = l1 + cnt + 1;
else a[l1].r = 0;
if (a[l1].l != 0) build(l1 + 1, l1 + cnt, l2, p - 1);
if (a[l1].r != 0) build(l1 + cnt + 1, r1, p + 1, r2);
}
void last(int i)
{
if (a[i].l != 0) last(a[i].l);
if (a[i].r != 0) last(a[i].r);
cout << a[i].v;
}
int main()
{
cin >> first >> mid;
int n = first.length();
for (int i = 0;i < n;i++)
a[i].v = first[i];
build(0, n - 1, 0, n - 1);
last(0);
}
这道题可以说是难度很小了,但是我死都找不到bug,我的妈,差点气的告别这个美丽的世界,调了将近5小时这个代码,我的天呐,本来都要睡觉了,光调代码了,到最后发现就是一个判断语句忘加也是醉了,一定要把这个玩意给
以上是关于二叉树与递归的主要内容,如果未能解决你的问题,请参考以下文章