https://leetcode.com/problems/n-ary-tree-postorder-traversal | Easy |
---|
Дано корневое дерево, выполните постобход и верните значения узлов в порядке обхода.
Input:
root = [1, null, 3, 2, 4, null, 5, 6]Output:
[5, 6, 3, 2, 4, 1]
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, 4, 8, 9, 10, 12, 13, 5, 1]
/**
* Definition for a Node.
* class Node(var `val`: Int) {
* var children: List<Node?> = listOf()
* }
*/
fun postorder(root: Node?): List<Int> {
val result = mutableListOf<Int>()
if (root == null) return result
fun traverse(node: Node?) {
if (node == null) return
node.children.forEach { traverse(it) } // Рекурсивно обходим дочерние узлы
result.add(node.`val`) // Добавляем значение текущего узла
}
traverse(root)
return result
}
O(n), где n — количество узлов в дереве.
O(h), где h — высота дерева, для хранения стека вызовов.