【LeetCode & 剑指offer 刷题笔记】目录(持续更新中...)
101. Symmetric Tree
/**
* 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)
{
return isMirror(root,root); //从根结点开始
}
bool isMirror(TreeNode* t1,TreeNode* t2)//判断两个树是否为镜像关系
{
//三个递归出口
if(t1==NULL && t2==NULL) return true; //两结点同时为空时为true,只有一个为空时为false,均为非空时,比较当前结点值以及左右子树是否为对称的
else if(t1==NULL || t2==NULL) return false;
//当前结点值相等,且左结点的左子树和右结点的右子树对称,左结点的右子树和右结点的左子树对称
return (t1->val == t2->val) && isMirror(t1->left,t2->right) && isMirror(t1->right,t2->left);
}
};