題目描述:
編一個程式,讀入使用者輸入的一串先序周遊字元串,根據此字元串建立一個二叉樹(以指針方式存儲)。
例如如下的先序周遊字元串: ABC##DE#G##F### 其中“#”表示的是空格,空格字元代表空樹。建立起
此二叉樹以後,再對二叉樹進行中序周遊,輸出周遊結果。
輸入描述:
輸入包括1行字元串,長度不超過100。
輸出描述:
可能有多組測試資料,對于每組資料,輸出将輸入字元串建立二叉樹後中序周遊的序列,每個字元後面
都有一個空格。每個輸出結果占一行。
示例描述:
輸入:abc##de#g##f###
輸出:c b e g d f a
代碼如下:
import java.util.*;
class TreeNode{
char value;
TreeNode left;
TreeNode right;
public TreeNode(char value) {
this.value = value;
}
}
public class Main{
public static int i = 0;
public static TreeNode createTestTree(String s){
TreeNode root = null;
if(s.charAt(i) != '#'){
root = new TreeNode(s.charAt(i));
i++;
root.left = createTestTree(s);
root.right = createTestTree(s);
}else {
i++;
}
return root;
}
public static void binaryTreeInOrder(TreeNode root){
if(root == null) {
return;
}
binaryTreeInOrder(root.left);
System.out.print(root.value+" ");
binaryTreeInOrder(root.right);
}
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
while(sca.hasNext()){
String s = sca.nextLine();
TreeNode root = createTestTree(s);
binaryTreeInOrder(root);
}
}
}