johna level
获赞
38
粉丝
0
关注
2
看过 TA
2
电子科技大学
2017
Java
IP属地:未知
暂未填写个人简介
私信
关注
2016-09-20 20:56
已编辑
电子科技大学 Java
完全二叉树 时间限制:C/C++语言 1000MS;其他语言 3000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB 题目描述: 1、根据给出的字符数组,按照下面样例的要求,构造一颗完全二叉树; 2、打印构造好的完全二叉树,打印的格式要求见样例; 3、翻转该树,而后打印翻转后的效果; 输入 输入一个不为空的字符数组 输出 打印后的完全二叉树和翻转后的二叉树(注意换行)  样例输入 {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'} 样例输出          A          / \        /   \       /    ...
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(" "); } } }
投递去哪儿等公司8个岗位
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务