101、对称二叉树
1)题目描述
给你一个二叉树的根节点 root , 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
提示:
- 树中节点数目在范围
[1, 1000] 内 -100 <= Node.val <= 100
2)分析
递归。
- 如果所给根节点为空,那么对称;
- 如果根结点不为空,当左子树与右子树对称时,对称;
- 如果左树的左孩子与右树的右孩子对称,左树的右孩子与右树的左孩子对称,那么这个左树和右树就对称。
3)C++ 代码
class Solution {
public:
bool comp(TreeNode* node1,TreeNode* node2){
if(!node1&&!node2)
return true;
if(!node1||!node2||node1->val!=node2->val)
return false;
return comp(node1->left,node2->right)&&comp(node1->right,node2->left);
}
bool isSymmetric(TreeNode* root) {
if(!root)
return true;
return comp(root->left,root->right);
}
};
|