先序序列和中序序列构造二叉树

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;
    }

 

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