johna:import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;
public class Main1 {
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){
String s = cin.nextLine();
if(s == null){
System.out.println();
System.out.println();
break;
}
List<Character> list = new LinkedList<Character>();
for(int i = 0; i<s.length();i++){
if(s.charAt(i) >='A' && s.charAt(i) <='Z'){
list.add(s.charAt(i));
}
}
int len = list.size();
int treeHeight = 0;
int tempheight = len;
while(tempheight > 0){
treeHeight ++;
tempheight >>= 1;
}
int index = 0;
// print original tree
for(int i = 0; i<treeHeight; i++){
int space = 1<< (treeHeight-1-i);
int charnum = 1<<i;
//print char
for(int j = 0; j<charnum && index <list.size(); j++){
printSpace(space-1);
System.out.print(list.get(index));
index ++;
printSpace(space);
}
System.out.println();
// print / and \
if(index >= list.size()){
break;
}
for(int j = 0; j<space/2; j++){
for(int k = 0; k<charnum; k++){
printSpace(space-2-j);
System.out.print("/");
printSpace(2*j+1);
System.out.print("\\");
printSpace(space-2-j+1);
}
System.out.println();
}
}
System.out.println();
// print reverse tree
index = 0;
for(int i = 0; i<treeHeight; i++){
int space = 1<< (treeHeight-1-i);
int charnum = 1<<i;
Stack<Character> stack = new Stack<Character>();
for(int j = 0; j<charnum; j++){
if(index <list.size()){
stack.push(list.get(index));
index ++;
}else{
stack.push(' ');
}
}
//print char
while(!stack.isEmpty()){
printSpace(space-1);
System.out.print(stack.pop());
printSpace(space);
}
System.out.println();
// print / and \
if(index >= list.size()){
break;
}
for(int j = 0; j<space/2; j++){
for(int k = 0; k<charnum; k++){
printSpace(space-2-j);
System.out.print("/");
printSpace(2*j+1);
System.out.print("\\");
printSpace(space-2-j+1);
}
System.out.println();
}
}
}
}
// print space
public static void printSpace(int n){
for(int i = 0; i< n; i++){
System.out.print(" ");
}
}
}

0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: