[LeetCode]606. Construct String from Binary Tree

题目

You need to construct a string consists of parenthesis and integers from a binary tree with the preorder traversing way.

The null node needs to be represented by empty parenthesis pair "()". And you need to omit all the empty parenthesis pairs that don't affect the one-to-one mapping relationship between the string and the original binary tree.

Example 1:

Input: Binary tree: [1,2,3,4]
       1
     /   \
    2     3
   /    
  4     
Output: "1(2(4))(3)"
Explanation: Originallay it needs to be "1(2(4)())(3()())", 
but you need to omit all the unnecessary empty parenthesis pairs. 
And it will be "1(2(4))(3)".

Example 2:

Input: Binary tree: [1,2,3,null,4]
       1
     /   \
    2     3
     \  
      4 
Output: "1(2()(4))(3)"
Explanation: Almost the same as the first example, 
except we can't omit the first parenthesis pair to break the one-to-one mapping relationship between the input and the output.
难度

Easy

方法

用递归的方法前序遍历,在遍历节点前加入(,遍历节点后加入)即可。如果左右子节点为空,则不需要其子节点的()。如果只有右子节点,则左子节点需要用()代替,以区分只有左子节点而无右子节点的情况

python代码
class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution(object):
    def __init__(self):
        self.result = ""

    def tree2str(self, t):
        """
        :type t: TreeNode
        :rtype: str
        """
        if t:
            self.result += str(t.val)
            if t.left or t.right:
                self.result += "("
            self.tree2str(t.left)
            if t.left or t.right:
                self.result += ")"
            if t.right:
                self.result += "("
                self.tree2str(t.right)
                self.result += ")"
        
        return self.result

root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)

assert Solution().tree2str(root) == "1(2(4))(3)"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,356评论 0 33
  • 在哪里听过这样的一句话:世界上有两样东西永远不会背叛你,一是你读过的每一本书,二是你跑过的每一步。 在这样的时刻想...
    七月流火阅读 1,832评论 0 2
  • 如果能在夏天的傍晚时 换上漂亮的连衣裙 随后去见一个喜欢的人 和他一起走在安静的巷子里 或是热闹的夜市里 那时候一...
    常樂丶阅读 2,701评论 1 0
  • 文/黄波艺 Excel函数有300多个,常用的大概就30-50个。而REPT函数估计大多数人都没有用过,但是用这个...
    玩Office阅读 5,449评论 0 2

友情链接更多精彩内容