101.|101. 对称二叉树
题目描述:
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
22
/ \ / \
34 43
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
22
\\
33
思路: 【101.|101. 对称二叉树】递归,两个子节点值相等,左节点的右子树与右节点的左子树镜像,右节点的左子树和左节点的右子树镜像,具体实现如下。
/**
* Definition for a binary tree node.
* struct TreeNode {
*int val;
*TreeNode *left;
*TreeNode *right;
*TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool isSymmetric(TreeNode* root) {
if(!root)
{
return true;
}
if(!root->left && !root->right)
{
return true;
}
return isSymmetricCore(root->left,root->right);
}bool isSymmetricCore(TreeNode* left,TreeNode* right)
{
if(left && right)
{
return (left->val==right->val)&&isSymmetricCore(left->right,right->left)&&isSymmetricCore(left->left,right->right);
}
else if(!left && !right)
{
return true;
}
return false;
}
};
推荐阅读
- 对称加密和非对称加密的区别
- java中如何实现重建二叉树
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- LeetCode-102.|LeetCode-102. 二叉树的层序遍历
- 331.|331. 验证二叉树的前序序列化
- 先序遍历 中序遍历 后序遍历 层序遍历
- C语言数据结构之二叉链表创建二叉树
- 27|27 二叉搜索树与双向链表
- 不对称