Given two binary trees, write a function to check if they are the same or not.
Two binary trees are considered the same if they are structurally identical and the nodes have the same value.
Example 1:
Input: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] Output: true
Example 2:
Input: 1 1 / \ 2 2 [1,2], [1,null,2] Output: false
Example 3:
Input: 1 1 / \ / \ 2 1 1 2 [1,2,1], [1,1,2] Output: false
这道题的思路:
1.至顶向下,逐个节点对比。
2.判断两个树对应节点是否同时存在,如果结果为真->对比值是否相同.
3.如果两个节点并非同时存在,检查是否相等。
4.考虑到每个节点的检查流程一样,可以使用递归调用来减少代码行增加可读性。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isSameTree(self, p, q):
"""
:type p: TreeNode
:type q: TreeNode
:rtype: bool
"""
if p and q:
if p.val != q.val:
return False
else:
return self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right)
elif p != q:
return False
return True
参考资料:https://leetcode.com/problems/same-tree/discuss/32729/Shortest+simplest-Python