【58】对称的二叉树
- 时间限制:1秒
- 空间限制:32768K
题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。
注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
牛客网题目链接:点击这里
VS2010代码:
// Source: http://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb?tpId=13&tqId=11211&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
// Author: Yang Qiang
// Date : 2016-8-12
#include<iostream>
using namespace std;
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) return 1;
//if(!pRoot->left && !pRoot->right) return 1;
//if(pRoot->left && pRoot->right)
return IsEqu(pRoot->left, pRoot->right);
}
//深度优先遍历,
bool IsEqu(TreeNode* p1,TreeNode* p2)
{
if(!p1 && !p2) return 1;
if( p1 && p2 && p1->val==p2->val )
{
bool leftEqu;
bool rightEqu;
leftEqu=IsEqu(p1->left,p2->right);
rightEqu=IsEqu(p1->right,p2->left);
return leftEqu && rightEqu;
}
else
return 0;
}
};
//对称:指以根为中心对称
牛客网通过图片: