Leetcode: Symmetric Tree

来源:互联网 发布:大数据培训课程有哪些 编辑:程序博客网 时间:2024/06/06 01:28


Get idea from Code Ganker′s Solution


Question

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

For example, this binary tree is symmetric:

1
/ \
2 2
/ \ / \
3 4 4 3
But the following is not:
1
/ \
2 2
\ \
3 3
Note:
Bonus points if you could solve it both recursively and iteratively.

confused what “{1,#,2,3}” means? > read more on how binary tree is serialized on OJ.

Hide Tags Tree Depth-first Search


Analysis

There are two cases that it is not symmetric
1) one is None, the another is not
2) two values are not the same


Solution

# Definition for a binary tree node.# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    # @param {TreeNode} root    # @return {boolean}    def isSymmetric(self, root):        if root==None:            return True        return self.helper(root.left, root.right)    def helper(self, rootl, rootr):        if rootl==None and rootr==None:            return True        if rootl==None or rootr==None:            return False        if rootl.val!=rootr.val:            return False        return self.helper(rootl.left,rootr.right) and self.helper(rootl.right,rootr.left)


0 0