0
点赞
收藏
分享

微信扫一扫

Kotlin中的步长

山竹山竹px 2023-10-19 阅读 36

在这里插入图片描述
给你一个二叉树的根节点 root 检查它是否轴对称
在这里插入图片描述
输入:root = [1,2,2,3,4,4,3]
输出:true
在这里插入图片描述
输入:root = [1,2,2,null,3,null,3]
输出:false
提示:
树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100
对称二叉树定义: 对于树中 任意两个对称节点 L 和 R ,一定有:

L.val = R.val :即此两对称节点值相等。
L.left.val = R.right.val :即 LLL 的 左子节点 和 RRR 的 右子节点 对称。
L.right.val = R.left.val :即 LLL 的 右子节点 和 RRR 的 左子节点 对称。
根据以上规律,考虑从顶至底递归,判断每对左右节点是否对称,从而判断树是否为对称二叉树
在这里插入图片描述

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool check(struct TreeNode*p,struct TreeNode*q)
{
    if(p ==NULL && q == NULL)
    {
        return true;
    }
    else if(p == NULL || q == NULL)
    {
        return false;
    }
    else if(p->val == q->val)
    {
        return check(p->left,q->right) && check(p->right,q->left);
    }
    else{
        return false;
    }
}
bool isSymmetric(struct TreeNode* root){
    return check(root,root);
}
举报

相关推荐

0 条评论