对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。

示例 1:

对称二叉树_第1张图片

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

对称二叉树_第2张图片

输入:root = [1,2,2,null,3,null,3]
输出:false

提示:

  • 树中节点数目在范围 [1, 1000] 内
  • -100 <= Node.val <= 100

进阶:你可以运用递归和迭代两种方法解决这个问题吗?

bool compare(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;
    // 值相同的结点
    else return compare(left->left, right->right) && compare(left->right, right->left);
}

bool isSymmetric(TreeNode *root) {
    //如果结点为空则说明对称
    if (root == NULL) return true;
    return compare(root->left, root->right);
}

你可能感兴趣的:(算法,数据结构)