leetcode-python-对称二叉树
1)递归,判断是否两个都是空节点。
如果只有一个空,则False
如果都不空但不相等,则False
否则返回左节点的左节点,右节点的右节点。
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right #递归 class Solution: def isSymmetric(self, root: TreeNode) -> bool: def check(left,right): if not left and not right: return True elif not left or not right: return False if left and right and left.val != right.val: return False return check(left.left,right.right) and check(left.right,right.left) return check(root,root)
2)栈+字符串,每层判断是否是回文串
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right #递归 class Solution: def isSymmetric(self, root: TreeNode) -> bool: stack = list() stack.append(root) while stack: next_stack = list() val_str = list() for node in stack: if not node: val_str.append(None) continue val_str.append(node.val) next_stack.append(node.left) next_stack.append(node.right) if val_str != val_str[::-1]: return False else: stack = next_stack return True

浙公网安备 33010602011771号