首页 > 其他 > 详细

树的遍历 | 对称二叉树

时间:2019-02-14 22:46:23      阅读:168      评论:0      收藏:0      [点我收藏+]

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

For example, this binary tree [1,2,2,3,4,4,3] is symmetric:

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

思路1: 递归

如果两个树p,q是对称的,那么p的左子树和q的右子树是对称的,p的右子树和左子树是对称的,

class Solution(object):
    def isSymmetric(self, root):
        return self.Mirror(root,root)
    def Mirror(self,p,q):
        if p is None and q is None:
            return True
        elif p is not None and q is not None:
            return p.val == q.val and self.Mirror(p.left,q.right) and self.Mirror(p.right,q.left)
        else:
            return False

思路2: 遍历

如果两个树p,q是对称的,那么在遍历的过程中,分别按照左孩子优先和右孩子优先遍历的顺序进行遍历,得到最终的结果是一样的。

树的遍历 | 对称二叉树

原文:https://www.cnblogs.com/xmxj0707/p/10381092.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!