题目: 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
思路:通过比较二叉树的前序遍历和对称前序遍历序列来判断二叉树是不是对称的。如果是相同的,那么二叉树时对称的。
注意:在遍历的二叉树时,需要将遇到的空指针考虑在内。
在线oj:
class Solution {
public:
bool isSymmetrical(TreeNode* pRoot)
{
return _isSymmetrical(pRoot,pRoot);
}
bool _isSymmetrical(TreeNode* pRoot1, TreeNode* pRoot2)
{
if (pRoot1 == NULL&&pRoot2 == NULL)
return true;
if (pRoot1 == NULL || pRoot2 == NULL)
return false;
if (pRoot1->val != pRoot2->val)
return false;
return _isSymmetrical(pRoot1->left, pRoot2->right) \
&& _isSymmetrical(pRoot1->right, pRoot2->left);
}
};