[leetcode] Symmetric Tree--二叉树遍历的应用

Posted lxydo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode] Symmetric Tree--二叉树遍历的应用相关的知识,希望对你有一定的参考价值。

题目:

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

分析:
题目是要判断左右两颗子树是否对称,采用只要根节点的值相同,并且左边子树的左子树和右边子树饿右子树对称 且 左边子树的右子树和右边子树的左子树对称。采用树的遍历的思想,递归的解决该问题。
代码:

class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if(root==NULL||(root->left==NULL&&root->right==NULL))
            return true;
        return postorder(root->left,root->right);
    }
    bool postorder(TreeNode* p,TreeNode* q)
    {
        if(p&&q)
        {
            if(p->val!=q->val)
                return false;
            return postorder(p->left,q->right)&&postorder(p->right,q->left);

        }else if(p==NULL&&q==NULL)
            return true;
        else
            return false;
    }
};

以上是关于[leetcode] Symmetric Tree--二叉树遍历的应用的主要内容,如果未能解决你的问题,请参考以下文章

leetcode - Symmetric Tree

LeetCode(101):Symmetric Tree

[LeetCode]题解(python):101 Symmetric tree

LeetCode OJ 101Symmetric Tree

LeetCode OJ 101Symmetric Tree

[LeetCode]题解(python):101-Symmetric Tree