[LeetCode] 100. 相同的树

62 阅读1分钟

100. 相同的树

Easy

思路

遍历树,比较两棵树的子树

  • 思路很清晰,这边我们使用DFS方法来求解
  • 树1的左子树比较树2的左子树,树1的右子树比较树2的右子树,向下递归
  • 递归终止条件 当需要比较的两个节点中有一个节点为None时无法向下递归,递归终止。
    • 两个节点都为None时,说明遍历了所有节点,且当前节点也相同,返回True
    • 两个节点中如果有一个节点为None,另一个节点不为None,说明最终节点不相同,返回False

以上,尝试一下代码,AC!

代码

python3

class Solution:
    def helper(self, node1, node2):
      if node1 is None and node2 is not None:
        return False
      elif node2 is None and node1 is not None:
        return False
      elif node1 is None and node2 is None:
        return True
      if node1.val != node2.val:
        return False
      return self.helper(node1.left, node2.left) and self.helper(node1.right ,node2.right)
      
    def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
      return self.helper(p,q)