1. 程式人生 > >洛谷 P1305 新二叉樹

洛谷 P1305 新二叉樹

16px ora roo names toolbar class ++ bar void

P1305 新二叉樹

題目描述

輸入一串二叉樹,用遍歷前序打出。

輸入輸出格式

輸入格式:

第一行為二叉樹的節點數n。

後面n行,每一個字母為節點,後兩個字母分別為其左右兒子。

空節點用*表示

輸出格式:

前序排列的二叉樹

輸入輸出樣例

輸入樣例#1: 復制
6
abc
bdi
cj*
d**
i**
j**
思路:搜索
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using
namespace std; string s[1000]; int n,root,pos,l,r; int vis[1000]; int lchild[1000],rchild[1000]; void dfs(int now){ cout<<char(now-1+a); if(lchild[now]) dfs(lchild[now]); if(rchild[now]) dfs(rchild[now]); } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ cin
>>s[i]; pos=s[i][0]-a+1; l=0,r=0; if(s[i][1]!=*) l=s[i][1]-a+1; if(s[i][2]!=*) r=s[i][2]-a+1; lchild[pos]=l; vis[l]=1; rchild[pos]=r; vis[r]=1; } for(int i=1;i<=n;i++) if(!vis[s[i][0]-
a+1]){ root=s[i][0]-a+1;break; } dfs(root); }

 

洛谷 P1305 新二叉樹