面试题59 对称的二叉树
题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), left(NULL), right(NULL) { 8 } 9 }; 10 */ 11 class Solution { 12 public: 13 bool isSame(TreeNode* p1, TreeNode* p2){ 14 if (p1 == NULL && p2 == NULL) 15 return true; 16 if (p1 == NULL && p2 != NULL) 17 return false; 18 if (p1 != NULL && p2 == NULL) 19 return false; 20 if (p1->val == p2->val) 21 return isSame(p1->left, p2->right) && isSame(p1->right, p2->left); 22 else 23 return false; 24 25 } 26 bool isSymmetrical(TreeNode* pRoot) 27 { 28 if (!pRoot) 29 return true; 30 return isSame(pRoot->left, pRoot->right); 31 } 32 33 };