LeetCode 100. 相同的树

题目描述

100. 相同的树

image-20250420121249788

image-20250420121330719

思路分析

这道题目可以使用递归的方式来解决,具体思路如下:

  • 如果两个二叉树都为空,则它们相同。
  • 如果一个二叉树为空,另一个二叉树不为空,则它们不相同。
  • 如果两个二叉树的根节点的值不相同,则它们不相同。
  • 递归地比较两个二叉树的左子树和右子树是否相同。

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 判断两棵树是否相同
func isSameTree(p *TreeNode, q *TreeNode) bool {
	// 如果两个节点都为 nil,返回 true
	if p == nil && q == nil {
		return true
	}
	// 如果一个节点为 nil,另一个不为 nil,返回 false
	if p == nil || q == nil {
		return false
	}
	// 如果两个节点的值不相等,返回 false
	if p.Val != q.Val {
		return false
	}
	// 递归检查左子树和右子树
	return isSameTree(p.Left, q.Left) && isSameTree(p.Right, q.Right)
}
  • 时间复杂度:O (n),其中 n 是树的节点数。
  • 空间复杂度:O (h),其中 h 是树的高度。

➡️ 点击查看 Java 题解

1
write your code here
本文作者:
本文链接: https://hgnulb.github.io/blog/2024/95440840
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!