ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

二叉树的遍历(前序遍历中序遍历后序遍历

2021-04-13 16:29:48  阅读:223  来源: 互联网

标签:遍历 string 后序 中序 二叉树 include 前序


在这里插入图片描述
给树的后序和中序遍历,求先序遍历
假设有一棵树长这样
在这里插入图片描述
很容易写出他的后序遍历DBAGFEC
也很容易写出他中序遍历DABCGEF
在这里插入图片描述

1.后序遍历是前后根,根节点永远是最后一个,因此我们可以找到根节点c
2.要我们输出前序遍历,因为根节点永远在前面,所以每次找到就输出就好了
3.之后用find函数找到根节点c在中序遍历中的位置,划分为两段DAB GEF,然后中序遍历这两段,注意一定要是先递归DAB再递归GEF不然的话就是根后前而不是根前后了
4.也将后序遍历划分为两段DAB GFE,用后序遍历递归下去

好了,直接上代码

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
void dg(string a,string b) {
	if (a.size() > 0) {
		char c = b[b.size() - 1];
		cout << c;
		int k = a.find(c);
		dg(a.substr(0, k), b.substr(0, k));
		dg(a.substr(k + 1), b.substr(k ,b.size()-k-1));
	}·
}
int main() {
	ios::sync_with_stdio(false);
	string in,aft;
	cin >> in >> aft;
	dg(in, aft);
}

给出前序遍历和中序遍历求后序遍历

#include<iostream>

using namespace std;
void dfs(string a, string b) {
	if (a.size() <= 0)return;
	char c = b[0];
	
	int x = a.find(c);
	dfs(a.substr(0, x), b.substr(1, x));
	dfs(a.substr(x + 1), b.substr(b.size()-x));
	cout << c;
}
int main() {
	string a, b;
	cin >> a >> b;
	dfs(a, b);
}

在这里插入图片描述

给出前序遍历和后序遍历求中序遍历


标签:遍历,string,后序,中序,二叉树,include,前序
来源: https://blog.csdn.net/supreme567/article/details/115653820

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有