728x90
https://leetcode.com/problems/same-tree/description/
Given the roots of two binary trees p and q, write a function to check if they are the same or not.
Two binary trees are considered the same if they are structurally identical, and the nodes have the same value.
Example 1:

Input: p = [1,2,3], q = [1,2,3]
Output: true
Example 2:

Input: p = [1,2], q = [1,null,2]
Output: false
Example 3:

Input: p = [1,2,1], q = [1,1,2]
Output: false
Constraints:
The number of nodes in both trees is in the range [0, 100].
-104 <= Node.val <= 104
풀이
public class TreeNode {
public var val: Int
public var left: TreeNode?
public var right: TreeNode?
public init() { self.val = 0; self.left = nil; self.right = nil; }
public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
self.val = val
self.left = left
self.right = right
}
}
class Solution {
func isSameTree(_ p: TreeNode?, _ q: TreeNode?) -> Bool {
guard p != nil || q != nil else { return true }
guard let p = p, let q = q else { return false }
return p.val == q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
}
}
import Testing
struct Tests {
private let solution = Solution()
@Test func test1() async throws {
#expect(solution.isSameTree(TreeNode(1, TreeNode(2), TreeNode(3)),
TreeNode(1, TreeNode(2), TreeNode(3))) == true)
}
@Test func test2() async throws {
#expect(solution.isSameTree(TreeNode(1, TreeNode(2), nil),
TreeNode(1, nil, TreeNode(2))) == false)
}
@Test func test3() async throws {
#expect(solution.isSameTree(TreeNode(1, TreeNode(2), TreeNode(1)),
TreeNode(1, TreeNode(1), TreeNode(2))) == false)
}
}728x90
'알고리즘 > LeetCode' 카테고리의 다른 글
| LeetCode: 104. Maximum Depth of Binary Tree (1) | 2025.08.27 |
|---|---|
| LeetCode: 1337. The K Weakest Rows in a Matrix (0) | 2025.08.20 |
| LeetCode: 888. Fair Candy Swap (0) | 2025.08.19 |
| LeetCode: 704. Binary Search (0) | 2025.08.17 |
| LeetCode: 441. Arranging Coins (0) | 2025.08.14 |
댓글