例题10.2二叉树遍历(华科)

二叉树遍历

http://www.nowcoder.com/practice/6e732a9632bc4d12b442469aed7fe9ce

例题10.2二叉树遍历(华科)

关键字:二叉树构造、遍历二叉树

要点:通过给出的先序遍历序列和中序遍历序列要能构造出原本的二叉树来

#include <iostream>
#include<vector>
using namespace std;

struct TreeNode {
	char data;
	TreeNode* left;
	TreeNode* right;
	TreeNode(char x) :data(x), left(nullptr), right(nullptr) {}
};

TreeNode* buildTree(string strPreOrder, string strInOrder) {
	if (strPreOrder.size() == 0 || strInOrder.size() == 0)
		return nullptr;
	char x = strPreOrder[0];
	TreeNode* root = new TreeNode(x);
	int position = strInOrder.find(x);  //找到当前节点x在字符串中的下标
	root->left = buildTree(strPreOrder.substr(1, position), strInOrder.substr(0,position)); //substr(pos,len);
	root->right = buildTree(strPreOrder.substr(position + 1), strInOrder.substr(position + 1));
	return root;
}

void postOrder(TreeNode* root) {
	if (root == nullptr)
		return;
	if (root->left != nullptr)
		postOrder(root->left);
	if (root->right != nullptr)
		postOrder(root->right);
	cout << root->data;
}

int main() {
	string strPreOrder,strInOrder;
	while (cin >> strPreOrder && cin >> strInOrder) {
		TreeNode* root = buildTree(strPreOrder, strInOrder);
		postOrder(root);
		cout << endl;
	}
	return 0;
}
全部评论
看到的最通俗易懂的
点赞 回复 分享
发布于 2023-03-17 21:16 湖北

相关推荐

04-11 21:31
四川大学 Java
野猪不是猪🐗:(ja)va学弟这招太狠了
点赞 评论 收藏
分享
04-11 23:51
门头沟学院 Java
坚定的芭乐反对画饼_许愿Offer版:人人都能过要面试干嘛,发个美团问卷填一下,明天来上班不就好了
点赞 评论 收藏
分享
评论
13
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务