Сложность: easy
Бинарное дерево является одноценным, если каждый узел в дереве имеет одинаковое значение.
Дан корень бинарного дерева, верните true, если данное дерево является одноценным, или false в противном случае.
Пример:
Input: root = [1,1,1,1,1,null,1]
Output: true
👨💻 Алгоритм:
1⃣Выполните обход дерева в глубину (DFS), чтобы собрать все значения узлов в список.
2⃣Проверьте, что все значения в списке одинаковы.
3⃣Если все значения одинаковы, верните true, иначе верните false.
😎 Решение:
class Solution {
var vals: [Int] = []
func isUnivalTree(_ root: TreeNode?) -> Bool {
dfs(root)
for v in vals {
if v != vals[0] {
return false
}
}
return true
}
func dfs(_ node: TreeNode?) {
if let node = node {
vals.append(node.val)
dfs(node.left)
dfs(node.right)
}
}
}Ставь 👍 и забирай 📚 Базу знаний