建立一棵二叉树 输出前序

本文详细介绍了如何建立一棵二叉树并实现其前序遍历。通过具体步骤和示例代码,读者将理解二叉树的构造过程以及前序遍历的逻辑。
摘要由CSDN通过智能技术生成
/*
洛谷 p1305
输入一串二叉树,用遍历前序打出。
第一行为二叉树的节点数n。(n \leq 26n≤26)
后面n行,每一个字母为节点,后两个字母分别为其左右儿子。
空节点用*表示
6
abc
bdi
cj*
d**
i**
j** 
输出:abdicj
思路:建立一个节点包含父节点 左儿子 右儿子 的节点(有父节点可以判断谁是根结点) 
*/
#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
const int N=100;
struct node
{
	int fa,l,r;
}tree[N];
int cnt;
map<char,int>ci;
map<int,char>ic;
void dfs(int x)
{
	if(x!=inf){
		printf("%c",ic[x]);
		dfs(tree[x].l);
		dfs(tree[x].r);
	}
	else return;
}
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		char s[4];
		scanf("%s",s);
		int f;
		if(ci[s[0]]==0){
			ci[s[0]]=++cnt;
			ic[cnt]=s[0];
			f=cnt;
		}
		else{
			f=ci[s[0]];
		}
		if(s[1]=='*'){
			tree[f].l=inf;
		}
		else{
			if(ci[s[1]]==0){
				ci[s[1]]=++cnt;
				ic[cnt]=s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值