【剑指offer】17.对称的二叉树
总目录:
1.问题描述
给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)
2.问题分析
1 递归
3.代码实例
递归
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 //递归函数 14 bool isMirrorNode(TreeNode* left, TreeNode* right) { 15 //二者是否同时存在 16 if ((left == NULL) != (right == NULL)) { 17 return false; 18 } 19 20 //两个都是空节点 21 if (!left) { 22 return true; 23 } 24 25 //两节点值是否相同 26 if (left->val != right->val) { 27 return false; 28 } 29 30 //递归 31 return isMirrorNode(left->left, right->right) && 32 isMirrorNode(left->right, right->left); 33 } 34 35 //入口函数 36 bool isSymmetrical(TreeNode* pRoot) { 37 if (!pRoot) { 38 return true; 39 } 40 41 return isMirrorNode(pRoot->left, pRoot->right); 42 } 43 };