Invert Binary Tree
https://leetcode.com/problems/invert-binary-tree | Easy |
Условие
Данокорень двоичного дерева, инвертируйте его и верните корень дерева.
Примеры
Input:
root = [4, 2, 7, 1, 3, 6, 9]Output:
[4, 7, 2, 9, 6, 3, 1]
Input:
root = [2, 1, 3]Output:
[2, 3, 1]
Input:
root = []Output:
[]
Решение
/**
* Example:
* var ti = TreeNode(5)
* var v = ti.`val`
* Definition for a binary tree node.
* class TreeNode(var `val`: Int) {
* var left: TreeNode? = null
* var right: TreeNode? = null
* }
*/
fun invertTree(root: TreeNode?): TreeNode? {
// Если корень пустой, возвращаем null
if (root == null) return null
// Инвертируем левое и правое поддеревья
val left = invertTree(root.left)
val right = invertTree(root.right)
// Меняем местами левое и правое поддеревья
root.left = right
root.right = left
return root // Возвращаем инвертированный корень
}
Временная сложность
O(n), где n — количество узлов в дереве, так как мы обходим каждую вершину.
Пространственная сложность
O(h), где h — высота дерева, для стека рекурсии в случае обхода. В худшем случае (древовидная структура) это может быть O(n).