https://leetcode-cn.com/problems/symmetric-tree/
给定一个二叉树,检查它是否是镜像对称的。
相似题:剑27. 二叉树的镜像 https://mp.csdn.net/console/editor/html/90676859
https://leetcode-cn.com/problems/symmetric-tree/solution/hua-jie-suan-fa-101-dui-cheng-er-cha-shu-by-guanpe/
时间复杂度是 O(n),因为要遍历 n 个节点
空间复杂度是 O(n),是递归的深度,也就是跟树高度有关,最坏情况下树变成一个链表结构,高度是n。
用队列来实现
首先从队列中拿出两个节点(left 和 right)比较将 left 的 left 节点和 right 的 right 节点放入队列将 left 的 right 节点和 right 的 left 节点放入队列时间复杂度是 O(n),空间复杂度是 O(n)
class Solution(object): def isSymmetric(self, root): """ :type root: TreeNode :rtype: bool """ if not root or not (root.left or root.right): return True # 用队列保存节点 queue = [root.left,root.right] while queue: # 从队列中取出两个节点,再比较这两个节点 left = queue.pop(0) right = queue.pop(0) # 如果两个节点都为空就继续循环,两者有一个为空就返回false if not (left or right): continue if not (left and right): return False if left.val!=right.val: return False # 将左节点的左孩子, 右节点的右孩子放入队列 queue.append(left.left) queue.append(right.right) # 将左节点的右孩子,右节点的左孩子放入队列 queue.append(left.right) queue.append(right.left) return Truehttps://leetcode-cn.com/problems/symmetric-tree/solution/dong-hua-yan-shi-101-dui-cheng-er-cha-shu-by-user7/