📌  相关文章
📜  国际空间研究组织 | ISRO CS 2015 |问题 9(1)

📅  最后修改于: 2023-12-03 15:37:15.415000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2015 |题目 9

这是一个关于二叉树的问题。题目要求我们判断两棵二叉树是否相似。所谓相似,就是每棵树的左子树和右子树都相似。

为了解决这个问题,我们可以采用递归的方法来判断每个节点的子节点是否相似。具体来说,我们可以设计一个递归函数来比较两个节点的子树。首先比较根节点,如果根节点不同,则这两棵树的子树一定不相似;如果根节点相同,则递归地比较左右子树的相似性。

函数的伪代码如下:

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

以上就是本题的解题思路和实现代码。