【剑指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 };
View Code

 

posted @ 2022-11-11 19:39  啊原来是这样呀  阅读(26)  评论(0编辑  收藏  举报