101. 对称二叉树
一、题目
给你一个二叉树的根节点 root
, 检查它是否轴对称。
二、思路
- 它们的两个根结点具有相同的值
- 每个树的右子树都与另一个树的左子树镜像对称
三、代码
class Solution { public boolean isSymmetric(TreeNode root) { return check(root, root); } public boolean check(TreeNode p, TreeNode q) { if (p == null && q == null) { return true; } if (p == null || q == null) { return false; } return p.val == q.val && check(p.left, q.right) && check(p.right, q.left); } }
四、分析
假设树上一共 n 个节点。
时间复杂度:这里遍历了这棵树,渐进时间复杂度为 O(n)。
空间复杂度:这里的空间复杂度和递归使用的栈空间有关,这里递归层数不超过 n,故渐进空间复杂度为 O(n)。