# 相同的树 (opens new window)
- 难度:Easy
- 标签:DFS 递归
# 刷题思路
- [x] DFS递归
- [x] DFS迭代
# 方法 1 递归
- 复杂度:
- 时间 O(min(m, n))
- 空间 O(min(m, n))
- 结果:
- 执行用时:76 ms, 在所有 JavaScript 提交中击败了85.48%的用户
- 内存消耗:38.4 MB, 在所有 JavaScript 提交中击败了5.00%的用户
var isSameTree = function(p, q) {
if (p === q) return true
if (!p || !q) return false
return p.val===q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
};
# 方法 2
- 思路: 创建栈,塞入原始数据,在不断推进的过程中做判断,能够完全完成为 true.
- 复杂度分析:
- 时间: O(min(m, n))
- 空间: O(min(m, n))
- 结果:
- 执行用时:84 ms, 在所有 JavaScript 提交中击败了64.15%的用户
- 内存消耗:38.5 MB, 在所有 JavaScript 提交中击败了6.07%的用户
var isSameTree = function(p, q) {
const stack = [[p, q]]
while (stack.length > 0) {
const [a, b] = stack.pop()
if (!isEqual(a, b)) return false
if (a && b) {
stack.push([a.right, b.right])
stack.push([a.left, b.left])
}
}
return true
};
function isEqual (a, b) {
if (a === b) return true
if (!a || !b) return false
if (a.val !== b.val) return false
return true
}
JS刷题记录 Leetcode-js (opens new window) 每周都会更新刷题心得或者题解, 你的点赞或 star 都将助力我产出更好内容~