[劍指offer] JAVA版題解 面試題37

在這裏插入圖片描述

代碼演示:

package swordfingeroffer;

/**
 * <p>Description: </p>
 *
 * @author 羅志遠
 * @version 1.0
 * @name InterviewQuestion37
 * @date 2020-06-21 23:38
 */
public class InterviewQuestion37 {

    private int index = -1;

    /**
     * 將二叉樹序列化
     * @param root
     * @return
     */
    public String serialize(TreeNode root) {
        StringBuilder stringBuilder = new StringBuilder();
        if (null == root) {
            stringBuilder.append("##,");
            return stringBuilder.toString();
        }
        stringBuilder.append(root.val + ",");
        stringBuilder.append(serialize(root.left));
        stringBuilder.append(serialize(root.right));
        return stringBuilder.toString();
    }

    /**
     * 將字符串反序化成二叉樹
     * @param str
     * @return
     */
    public TreeNode deSerialize(String str) {
        index ++;
        if (index >= str.length()) {
            return null;
        }
        String[] split = str.split(",");
        TreeNode node = null;
        if (!("##".equals(split[index]))) {
            node = new TreeNode(Integer.parseInt(split[index]));
            node.left = deSerialize(str);
            node.right = deSerialize(str);
        }
        return node;
    }
}

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