树--101.镜像树

    xiaoxiao2025-07-31  15

    [101. Symmetric Tree(https://leetcode.com/problems/symmetric-tree/)

    题目描述 判断是否是镜像二叉树(对称) 例子 略 思想 (递归) 定义一辅助函数,输入为left和right,判断是否相等。 (迭代) 定义两个栈,层次遍历时判断,并分别从左向右和从右向左存储。 解法1 递归 # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def isSymmetric(self, root): """ :type root: TreeNode :rtype: bool """ if not root: return True return self.helper(root.left, root.right) def helper(self, left, right): if not left and not right: return True if not left or not right or left.val != right.val: return False return self.helper(left.left, right.right) and self.helper(left.right, right.left) # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def isSymmetric(self, root: TreeNode) -> bool: if not root or not root.left and not root.right: return True if not root.left or not root.right: return False stack1 = [root.left] stack2 = [root.right] while stack1 and stack2: node1 = stack1.pop() node2 = stack2.pop() if node1.val != node2.val: return False if node1.left and node2.right: stack1.append(node1.left) stack2.append(node2.right) elif node1.left or node2.right: return False if node1.right and node2.left: stack1.append(node1.right) stack2.append(node2.left) elif node1.right or node2.left: return False return True
    最新回复(0)