📅  最后修改于: 2023-12-03 15:37:15.415000             🧑  作者: Mango
这是一个关于二叉树的问题。题目要求我们判断两棵二叉树是否相似。所谓相似,就是每棵树的左子树和右子树都相似。
为了解决这个问题,我们可以采用递归的方法来判断每个节点的子节点是否相似。具体来说,我们可以设计一个递归函数来比较两个节点的子树。首先比较根节点,如果根节点不同,则这两棵树的子树一定不相似;如果根节点相同,则递归地比较左右子树的相似性。
函数的伪代码如下:
isSimilar(node1, node2):
如果node1和node2都为空,则它们相似,返回True
如果node1和node2有且只有一个为空,则它们不相似,返回False
如果node1和node2的值不相等,则它们不相似,返回False
如果上述条件都不满足,则递归判断它们的子树是否相似,返回左右子树相似的布尔值的逻辑与运算结果
代码实现:
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def isSimilar(node1, node2):
if not node1 and not node2:
return True
if not node1 or not node2:
return False
if node1.val != node2.val:
return False
is_left_similar = isSimilar(node1.left, node2.left)
is_right_similar = isSimilar(node1.right, node2.right)
return is_left_similar and is_right_similar
以上就是本题的解题思路和实现代码。