根据二叉树创建字符串

Posted du001011

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据二叉树创建字符串相关的知识,希望对你有一定的参考价值。

你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。

空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

示例 1:

输入: 二叉树: [1,2,3,4]
       1
     /       2     3
   /    
  4     

输出: "1(2(4))(3)"

解释: 原本将是“1(2(4)())(3())”,
在你省略所有不必要的空括号对之后,
它将是“1(2(4))(3)”。
示例 2:

输入: 二叉树: [1,2,3,null,4]
       1
     /       2     3
     \  
      4 

输出: "1(2()(4))(3)"

解释: 和第一个示例相似,
除了我们不能省略第一个对括号来中断输入和输出之间的一对一映射关系。
StringBuilder sb = new StringBuilder();
    TreeNode pre = null;
    public String tree2str(TreeNode t) 
        if (t == null) return "";
        helper(t, pre);
        return sb.substring(1, sb.length() - 1);
    

    private void helper(TreeNode root, TreeNode pre) 
        if (root == null) return;
        //前序遍历
        //1.如果当前节点为父节点的右子树且左子树为空,括号不能省略
        if (pre != null && pre.left == null && pre.right == root) 
            sb.append("()");
        
        sb.append("(").append(root.val);
        pre = root;
        helper(root.left, pre);
        helper(root.right, pre);
        //遍历完当前节点后关闭括号
        sb.append(")");
    

 

以上是关于根据二叉树创建字符串的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode根据二叉树创建字符串&&二叉树的构建以及遍历(递归)

leetcode二叉树

Leetcode 606.根据二叉树创建字符串

LeetCode 606 根据二叉树创建字符串[二叉树 dfs] HERODING的LeetCode之路

根据二叉树创建字符串

LeetCode Algorithm 606. 根据二叉树创建字符串