Сложность: easy
Дан корень бинарного дерева. Верните обход значений его узлов в симметричном порядке.
Пример:
Input: root = [1,null,2,3] Output: [1,3,2] 👨💻 Алгоритм:
1⃣Определяем вспомогательную рекурсивную функцию, которая будет обходить дерево
2⃣Сначала обходим левое поддерево
3⃣Затем добавляем значение текущего узла и обходим правое поддерево
😎 Решение:
class TreeNode {
var val: Int
var left: TreeNode?
var right: TreeNode?
init(_ val: Int, _ left: TreeNode? = nil, _ right: TreeNode? = nil) {
self.val = val
self.left = left
self.right = right
}
}
class Solution {
func inorderTraversal(_ root: TreeNode?) -> [Int] {
var res = [Int]()
helper(root, &res)
return res
}
private func helper(_ root: TreeNode?, _ res: inout [Int]) {
guard let root = root else { return }
helper(root.left, &res)
res.append(root.val)
helper(root.right, &res)
}
}Ставь 👍 и забирай 📚 Базу знаний