题目链接:对称的二叉树
题意:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
题解:判断树的左子树右子树的节点值是否相等。且镜像对称,即左子树的左节点=右子树的右节点。递归即可。
代码:
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 isSymmetrical(TreeNode* pRoot1,TreeNode* pRoot2){ 14 if(pRoot1 == NULL && pRoot2 == NULL) return true; 15 if(pRoot1 == NULL || pRoot2 == NULL) return false; 16 if(pRoot1->val != pRoot2 -> val) return false; 17 return isSymmetrical(pRoot1->left,pRoot2->right) && 18 isSymmetrical(pRoot1->right,pRoot2->left); 19 } 20 bool isSymmetrical(TreeNode* pRoot){ 21 if(pRoot==NULL) return true; 22 return isSymmetrical(pRoot,pRoot); 23 } 24 25 };