可以把树看成两个树. 根节点不用管. 直接同时遍历根节点的左子树和右子树,然后看左子树的左边等不等于右子树的右边, 以此类推. 其实就是简单的后续遍历,在遍历的时候看看左子树是否等于右子树. 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Solution: def isSymmetric(self, root: Optional[TreeNode]) -> bool: if root is None: return True def travel(node1, node2): if node1 is None and node2 is None: return True if node1 is None and node2 is not None: return False if node1 is not None and node2 is None: return False if node1.val != node2.val: return False return travel(node1.left, node2.right) and travel(node1.right, node2.left) return travel(root.left, root.right)
|