【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);
}
};