Сложность: easy
Дано корневое дерево с n-арной структурой, верните обход дерева в постфиксном порядке для значений его узлов.
Сериализация входных данных n-арного дерева представлена в обходе уровней. Каждая группа детей разделяется значением null (см. примеры).
Пример:
Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
Output: [2,6,14,11,7,3,12,8,4,13,9,10,5,1]
👨💻 Алгоритм:
1⃣Инициализируйте стек для хранения узлов и список для хранения значений узлов в обратном порядке.
2⃣Начните с корневого узла и добавьте его в стек. Пока стек не пуст, извлекайте узлы из стека, добавляя их значения в начало списка, и добавляйте всех его детей в стек.
3⃣В конце верните список значений узлов.
😎 Решение:
class Node {
var val: Int
var children: [Node]
init(_ val: Int) {
self.val = val
self.children = []
}
}
class Solution {
func postorder(_ root: Node?) -> [Int] {
guard let root = root else { return [] }
var stack: [Node] = [root]
var output: [Int] = []
while !stack.isEmpty {
let node = stack.removeLast()
output.insert(node.val, at: 0)
for child in node.children {
stack.append(child)
}
}
return output
}
}Ставь 👍 и забирай 📚 Базу знаний
