검지offer(64): 서열화 두 갈래 나무

제목 설명
두 개의 함수를 실현하십시오. 각각 서열화와 반서열화 두 갈래 나무에 사용됩니다.
분석
만약 두 갈래 나무의 서열화가 뿌리 노드에서 시작된다면, 대응하는 반서열화도 뿌리 노드에서 시작된다.따라서 두 갈래 트리의 앞 순서를 사용하여 두 갈래 트리를 정렬할 수 있습니다. 현재 순서는 null 값에 부딪히면 "#"을 사용하여 각 노드의 수치 사이를 ","로 구분합니다.
우객 AC:
/* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */
public class Solution {
    public int index = -1;  //  

    /** *   *  , ,null “#” * * @param root * @return */
    String Serialize(TreeNode root) {
        StringBuffer s = new StringBuffer();
        if (root == null) {
            s.append("#,");
            return s.toString();
        }
        s.append(root.val + ",");
        s.append(Serialize(root.left));
        s.append(Serialize(root.right));
        return s.toString();
    }

    /** *   * * @param str * @return */
    TreeNode Deserialize(String str) {
        index++;
        int length = str.length();
        if (index >= length) {
            return null;
        }
        String[] nodeSeq = str.split(",");
        TreeNode pNode = null;
        if (!nodeSeq[index].equals("#")) {
            pNode = new TreeNode(Integer.valueOf(nodeSeq[index]));
            pNode.left = Deserialize(str);
            pNode.right = Deserialize(str);
        }
        return pNode;
    }
}

참고 1.하해도, 검지offer 명기업 면접관 정강 전형 프로그래밍 문제(기념판), 전자공업출판사

좋은 웹페이지 즐겨찾기