先序序列和中序序列構造二叉樹

1、題目描述:求先序序列(ABCDEFGHI)和中序序列(BCAEDGHFI)所確定的一個二叉樹

解題思路:

首先,由先序序列可知A爲二叉樹的根節點。中序序列中A之前的BC爲左子樹的中序序列,EDGHFI爲右子樹的中序序列。然後由先序序列可知B是左子樹的根節點,D是右子樹的根節點。依次列退,就能將剩下的節點全部分解下去,最後得到二叉樹如圖(c)

public class 由遍歷序列構造二叉樹 {

    public static void main(String [] args){
        String f = "ABCDEFGHI";
        String z = "BCAEDGHFI";
        TreeNodeStr root = rebuildTree(f,z);
        System.out.println("a");
    }

    public static TreeNodeStr rebuildTree(String fString, String zString){
        if (fString != null && !"".equals(fString) && zString != null && !"".equals(zString)){
            String [] str = fString.split("");
            TreeNodeStr root = new TreeNodeStr(str[0]);
             //獲取root的左節點
            int temp = zString.indexOf(str[0]);
            String zLeft  = zString.substring(0,temp);
            String zRight  = zString.substring(temp+1);
            String fLeft = fString.substring(1,temp+1);
            String fRight = fString.substring(temp+1);
            root.left = rebuildTree(fLeft,zLeft);
            root.right = rebuildTree(fRight,zRight);
            return root;
        }else {
            return null;
        }
    }
//
}

class TreeNodeStr{
    String val = null;
    TreeNodeStr left = null;
    TreeNodeStr right = null;
    public TreeNodeStr(String val) {
        this.val = val;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章