LeetCode101.对称二叉树
题目:给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是 [1,2,2,null,3,null,3] 则不是镜像对称的:
思路:等价于检查root的左子树和右子树是不是对称,对于左右子树的每个节点一一比较即可,比较包括节点的值,以及对应子节点是否相等。
解1:递归
class Solution { public: bool isSymmetric(TreeNode* root) { return compare(root->left, root->right); } bool compare(TreeNode* left, TreeNode* right) { bool mid, child; if (left == NULL && right != NULL) return false; else if (left != NULL && right == NULL) return false; else if (left == NULL && right == NULL) return true; else { mid = left->val == right->val; child = compare(left->left, right->right) && compare(left->right, right->left); } return mid && child; } };
解2:迭代