题解 | #对称的二叉树#
对称的二叉树
http://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb
对称二叉树判断
思路:利用先序依次判读左树和右树。左树是(根左右遍历),右树是(根右左遍历),三种情况
左右树根节点都为空,返回true
左空右不为空或右空左不为空 返回false
左右值不等false,相等时继续判断后序节点。
/*
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 true;
return check(pRoot->left, pRoot->right);
}
bool check(TreeNode* l,TreeNode* r){
if(!l && !r)return true;
if(!l && r || !r && l)return false;
if(l->val != r->val)
return false;
else
return check(l->left, r->right) && check(l->right, r->left);
}
};