天天看點

題目描述: 編一個程式,讀入使用者輸入的一串先序周遊字元串,根據此字元串建立一個二叉樹(以指針方式存儲)。 例如如下的先序周遊字元串: ABC##DE#G##F### 其中“#”表示的是空

題目描述:

編一個程式,讀入使用者輸入的一串先序周遊字元串,根據此字元串建立一個二叉樹(以指針方式存儲)。

例如如下的先序周遊字元串: 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);
        }
    }
    
}
           

繼續閱讀