对称二叉树
leetcode链接
问题描述
给你一个二叉树的根节点 root , 检查它是否轴对称。
提示:
树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100
示例
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
解题思路
判断二叉树是否对称就是判断其左右子树是否对称
若对子树中的同一层,左子树的左节点等于右子树的右节点,左子树的右节点等于右子树的左节点
则说明左右子树对称
代码实现
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {boolean compare(TreeNode left, TreeNode right) {if (left == null && right == null) {return true;} else if (left == null && right != null) {return false;} else if (left != null && right == null) {return false;} else if (left.val != right.val) {return false;}/*若两个父节点都不为空且相等, 则进一步比较其下的子树*/boolean outside = compare(left.left, right.right);boolean inside = compare(left.right, right.left);boolean isSame = outside && inside;return isSame;}public boolean isSymmetric(TreeNode root) {return compare(root.left, root.right);}
}
复杂度
时间复杂度:
因为整颗树都被遍历了所以为O(n)
空间复杂度:
eft, root.right);
}
}
## 复杂度时间复杂度:因为整颗树都被遍历了所以为O(n)空间复杂度:O(n)