LeetCode 100. 相同的树
题目描述
思路分析
这道题目可以使用递归的方式来解决,具体思路如下:
- 如果两个二叉树都为空,则它们相同。
- 如果一个二叉树为空,另一个二叉树不为空,则它们不相同。
- 如果两个二叉树的根节点的值不相同,则它们不相同。
- 递归地比较两个二叉树的左子树和右子树是否相同。
参考代码
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 是树的高度。
1
write your code here
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用