📜  门| GATE-CS-2015(套装2)|问题 29(1)

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

门| GATE-CS-2015(套装2)|问题 29

该问题主要考察数据结构和算法的知识。题目要求实现一个函数用于判断两个二叉树是否相等。以下是该问题的解决方案。

解决方案
算法

判断两个二叉树是否相等可以通过递归方法实现,具体步骤如下:

  1. 判断两个根节点是否为空,如果都为空则返回 true;
  2. 如果其中一个为空,另一个不为空,返回 false;
  3. 如果两个根节点的值不相等,返回 false;
  4. 递归比较两个树的左子树和右子树;
代码

以下是 Python 代码实现:

class TreeNode:
    def __init__(self, val=None, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def is_same_tree(p: TreeNode, q: TreeNode) -> bool:
    if not p and not q:
        return True
    elif not p or not q:
        return False
    elif p.val != q.val:
        return False
    else:
        return is_same_tree(p.left, q.left) and is_same_tree(p.right, q.right)
复杂度分析

该算法通过递归方法实现,时间复杂度为 O(N),其中 N 是树的节点数。空间复杂度取决于递归栈的深度,最坏情况下为 O(N)。