Java教程

101. 对称二叉树

本文主要是介绍101. 对称二叉树,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

101. 对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。

 

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

 

提示:

  • 树中节点数目在范围 [1, 1000] 内
  • -100 <= Node.val <= 100

 

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 8  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 9  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10  * };
11  */
12 class Solution {
13 public:
14     bool isMirro(TreeNode *t1, TreeNode *t2) {
15         // 两节点均为空时,对称
16         if (t1 == nullptr && t2 == nullptr) {
17             return true;
18         }
19         // 两节点其中一个为空不对称
20         if (t1 == nullptr || t2 == nullptr) {
21             return false;
22         }
23         // 两节点值相同且左节点的左子树等于右节点的右子树,左节点的右子树等于右节点的左子树为对称
24         if (t1->val == t2->val) {
25             return isMirro(t1->left, t2->right) && isMirro(t1->right, t2->left);
26         }
27         return false;
28     }
29     bool isSymmetric(TreeNode* root) {
30         return isMirro(root, root);
31     }
32 };

 

这篇关于101. 对称二叉树的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!