【Leetcode】NO.101 对称二叉树(C++&Python)[二叉树]

题目 101. 对称二叉树

给定一个二叉树,检查它是否是镜像对称的。

思路

  1. 使用递归
    首先排除掉所有不对称和空节点的情况;
    (左空右非空)(左非空右空)(左右为空)
    接着判断节点是否是对称(对称节点的值是否是相等的)

在主函数的时候判断根节点是否为空,为空直接返回true

代码


/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        // 递归算法
        
        if(root == NULL)
        {
            return true;
        }
        return cmp(root->left, root->right);
    }
    bool cmp(TreeNode* left, TreeNode* right){
            if(left==NULL && right!=NULL)   return false;
            else if(left!=NULL && right==NULL)   return false;
            else if(left==NULL && right==NULL)   return true;
            else if(left->val!=right->val)  return false;
            bool issy = cmp(left->left, right->right)&&cmp(left->right,right->left);
            return issy;
        }
};

Python 版本

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
        # 判断节点kong
        if(root is None):
            return True
        return self.cmp(root.left, root.right)

    def cmp(self, left:TreeNode, right:TreeNode) -> bool:
        if left is None and right is not None:
            return False
        elif left is not None and right is None:
            return False
        elif left is None and right is None:
            return True
        else:
            if(left.val!=right.val):
                return False
            isSym = self.cmp(left.left, right.right) and self.cmp(left.right, right.left)
        return isSym
            


posted @ 2022-01-06 20:46  jucw  阅读(30)  评论(0编辑  收藏  举报