orz,没有思路,有了思路还是错的
递归: 可以仿照归并排序,我这么觉得 两边判断,如果不是当我没说 递归停止的条件是什么? 结束条件 左节点和右节点都为空 -> 倒底了都长得一样 ->true 左节点为空的时候右节点不为空,或反之 -> 长得不一样-> false 左右节点值不相等 -> 长得不一样 -> false
要想两棵树镜像对称,那么A树左边的左边要和B树右边的右边镜像,A树左边的右边要和B树右边的左边镜像我们才能说这两棵树是镜像的 递归条件 调用递归函数传入左左和右右 调用递归函数传入左右和右左
调用递归函数,我们想知道它的左右孩子是否镜像,传入的值是root的左孩子和右孩子。
class Solution {
public:
bool isSymmetric(TreeNode* root) {
if(root == NULL)
return true;
else
return double_isSymmetric(root->left,root->right);
}
bool double_isSymmetric(TreeNode* left_,TreeNode* right_){
if(left_ == NULL && right_ == NULL)
{
return true;
}
if(left_ == NULL || right_ == NULL)
{
return false;
}
if(left_->val != right_->val)
{
return false;
}
return double_isSymmetric(left_->left,right_->right) && double_isSymmetric(left_->right,right_->left);
}
};
|