Construct String from Binary Tree
给定一个二叉树,把它转化为字符串结构,
如果左边有子树,则表示为(root.val),该括号不可省略,否则破坏树结构
但是当右子树不存在时,可以省略其()
举例子:
1
2 3
4
return 1(2(4))(3)
分类讨论:
1、当存在左子树或者右子树存在,则左边的形式为"(root.left.val)",否则""
2、当右子树存在时,则才会有"(root.right.val)",否则""
3、如果左右子树都不存在,则返回root.val即可
这里可以优化写法,使得代码更加简洁:
class Solution(object):
def constructstring(self, root):
if not root:
return ""
subleft = "({})".format(self.constructstring)if root.left or root.right else ''
subright = "({})".format(self.constructstring) if root.right else ""
return "{}{}{}".format(root.val, subleft, subright)
主要还是考察分类讨论的思想,把各种情况理清