P1030 [NOIP2001 普及组] 求先序排列,洛谷,C++

本文介绍了如何使用C++编程语言实现二叉搜索树的构建函数buildTree和前序遍历preOrder。通过输入序列in和last,构建二叉树并使用递归方法进行前序遍历输出节点数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<bits/stdc++.h>
using namespace std;
typedef struct node* tree;
struct node{
	char data;
	tree left,right;
};
tree root;
string in,last;
int k;
void buildTree(int L,int R,tree &t){
	if(L>R) return;
	int flag=-1;
	for(int i=L;i<=R;i++){
		if(in[i]==last[k]){
			flag=i;
			break;	
		}
	} 
	t=new node;
	t->data=in[flag];
	t->left=NULL;
	t->right=NULL;
	k--;
	buildTree(flag+1,R,t->right);
	buildTree(L,flag-1,t->left);
}
void preOrder(tree t){
	if(t){
		cout<<t->data;
		preOrder(t->left);
		preOrder(t->right);
	}
}
int main(){
	cin>>in>>last;
	k=last.length()-1;
	buildTree(0,k,root);
	preOrder(root);
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值