【二叉树】二叉树的序列化练习题

**首先我们介绍二叉树先序序列化的方式,假设序列化的结果字符串为str,初始时str等于空字符串。先序遍历二叉树,如果遇到空节点,就在str的末尾加上“#!”,“#”表示这个节点为空,节点值不存在,当然你也可以用其他的特殊字符,“!”表示一个值的结束。如果遇到不为空的节点,假设节点值为3,就在str的末尾加上“3!”。现在请你实现树的先序序列化。

给定树的根结点root,请返回二叉树序列化后的字符串。**

import java.util.*;

/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;
    public TreeNode(int val) {
        this.val = val;
    }
}*/
public class TreeToString {
    public String toString(TreeNode root) {
        StringBuilder sb = new StringBuilder();
        TreeNode p = root;
        Stack<TreeNode> stack = new Stack<>();

        while (p != null || !stack.isEmpty()) {
            if (p != null) {
                sb.append(p.val).append("!");
                stack.push(p);
                p = p.left;
            } else {
                sb.append("#").append("!");
                TreeNode pop = stack.pop();
                p = pop.right;
            }
        }

        sb.append("#").append("!");

        return sb.toString();
    }
}

猜你喜欢

转载自blog.csdn.net/Super_white/article/details/82256471