九度 题目1184:二叉树遍历
来源:互联网 发布:微信自动回复源码 编辑:程序博客网 时间:2024/05/16 05:27
- 题目描述:
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
例如如下的先序遍历字符串:
ABC##DE#G##F###
其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。
- 输入:
输入包括1行字符串,长度不超过100。
- 输出:
可能有多组测试数据,对于每组数据,
输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。
每个输出结果占一行。
- 样例输入:
abc##de#g##f###
- 样例输出:
c b e g d f a
这题主要是要根据先序遍历构建二叉树, 这个代码写出来非常难看。 待优化, 下面是代码
import java.io.BufferedInputStream;import java.io.IOException;import java.util.Scanner;import java.util.Stack;public class Main {public static void main(String[] args) throws IOException {Scanner cin = new Scanner(new BufferedInputStream(System.in));while(cin.hasNext()) {String string = cin.nextLine().trim();process(string);}cin.close();}static void process(String string){Node parent = null;Node root = null;Node node = null;boolean left = true;OUTER: for(int i=0; i<string.length(); i++) {char ch = string.charAt(i);if(ch == '#') {if(left) {left = false;} else {while(true) {parent = parent.parent;if(parent == null) {break OUTER;}if(parent.right == null) {break;}}}continue;}node = new Node(ch);if(root == null) {root = node;}if(parent != null) {if(left) {parent.left = node;} else {parent.right = node;left = true;}node.parent = parent;}parent = node;}Tree tree = new Tree();tree.root = root;tree.middleTraversal();}}class Tree {Node root;void middleTraversal() {if(this.root == null) {return;}StringBuffer buffer = new StringBuffer();Stack<Node> stack = new Stack<Node>();Node node = this.root;while(node != null || !stack.isEmpty()) {while(node != null) {stack.push(node);node = node.left;}Node pop = stack.pop();buffer.append(pop.key).append(" ");node = pop.right;}System.out.println(buffer.toString());}}class Node {char key;Node left;Node right;Node parent;Node(char key) {this.key = key; }}
0 0
- 九度题目1184:二叉树遍历
- 九度题目1184:二叉树遍历
- 九度 题目1184:二叉树遍历
- 九度oj 二叉树遍历 题目1184
- 九度oj 题目1078:二叉树遍历
- 九度OnlineJudge题目1078:二叉树遍历
- 【九度OJ】题目1078:二叉树遍历 解题报告
- 九度OJ题目1078:二叉树遍历
- 九度OJ题目1078:二叉树遍历
- 九度oj 1184 二叉树遍历
- 九度OJ - 1184 - 二叉树遍历
- 九度OJ 1184:二叉树遍历 (二叉树)
- 题目1184:二叉树遍历
- 题目1184:二叉树遍历
- 题目1184:二叉树遍历
- 题目1184:二叉树遍历
- 题目1184:二叉树遍历
- 题目1184:二叉树遍历
- 概述ViewState
- Python 实现简单的稀疏矩阵
- 蟠桃记
- Codeforces #285 C Misha and Forest 队列维护 解题报告
- Apache Apollo
- 九度 题目1184:二叉树遍历
- Layer设置背景色
- bootstrap:动态添加tab标签
- vim查找和替换详解
- POJ 1717 Dominoes(DP)
- 请你不要吃我,我给你唱一只好听的歌
- flex 自定义HashMap类(转)
- About Time_Zone on ROR
- 第一天开通博客