请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
题目介绍
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
题目分析
这是一个典型的要借助递归的题目,循环判断同一层的对应位置元素值是否相同,详细思路见源代码。
源代码
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};
*/
class Solution {
public:bool isSymmetrical(TreeNode* pRoot){if(pRoot==NULL) return true;TreeNode* left = pRoot->left;TreeNode* right = pRoot->right;return myIsSymmetrical(left,right);}bool myIsSymmetrical(TreeNode* node1,TreeNode* node2){if(node1==NULL && node2==NULL)return true;if(node1==NULL || node2==NULL || node1->val != node2->val)return false;return myIsSymmetrical(node1->left,node2->right) && myIsSymmetrical(node1->right,node2->left);}};