965. Univalued Binary Tree
선택한 UI 언어에 맞게 문제 텍스트를 러시아어에서 번역합니다. 코드는 변경하지 않습니다.
Бинарное 트리 является одноценным, если каждый узел в дереве имеет одинаковое значение.
Дан корень бинарного дерева, return true, если данное 트리 является одноценным, или false в противном случае.
예제:
Input: root = [1,1,1,1,1,null,1]
Output: true
C# 해법
매칭됨/원본public class Solution {
private List<int> vals;
public bool IsUnivalTree(TreeNode root) {
vals = new List<int>();
Dfs(root);
foreach (int v in vals) {
if (v != vals[0]) {
return false;
}
}
return true;
}
private void Dfs(TreeNode node) {
if (node != null) {
vals.Add(node.val);
Dfs(node.left);
Dfs(node.right);
}
}
}
C++ 해법
자동 초안, 제출 전 검토#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
private List<int> vals;
public bool IsUnivalTree(TreeNode root) {
vals = new List<int>();
Dfs(root);
foreach (int v in vals) {
if (v != vals[0]) {
return false;
}
}
return true;
}
private void Dfs(TreeNode node) {
if (node != null) {
vals.push_back(node.val);
Dfs(node.left);
Dfs(node.right);
}
}
}
Java 해법
자동 초안, 제출 전 검토import java.util.*;
import java.math.*;
// Auto-generated Java draft from the C# solution. Review API differences before LeetCode submit.
public class Solution {
private List<int> vals;
public boolean IsUnivalTree(TreeNode root) {
vals = new List<int>();
Dfs(root);
foreach (int v in vals) {
if (v != vals[0]) {
return false;
}
}
return true;
}
private void Dfs(TreeNode node) {
if (node != null) {
vals.add(node.val);
Dfs(node.left);
Dfs(node.right);
}
}
}
Python 해법
매칭됨/원본class Solution:
def isUnivalTree(self, root: TreeNode) -> bool:
vals = []
def dfs(node):
if node:
vals.append(node.val)
dfs(node.left)
dfs(node.right)
dfs(root)
return all(v == vals[0] for v in vals)
Go 해법
매칭됨/원본func isUnivalTree(root *TreeNode) bool {
vals := []int{}
var dfs func(node *TreeNode)
dfs = func(node *TreeNode) {
if node != nil {
vals = append(vals, node.Val)
dfs(node.Left)
dfs(node.Right)
}
}
dfs(root)
for _, v := range vals {
if v != vals[0] {
return false
}
}
return true
}
Algorithm
Выполните обход дерева в глубину (DFS), чтобы собрать все значения узлов в список.
Проверьте, что все значения в списке одинаковы.
Если все значения одинаковы, return true, иначе return false.
😎
Vacancies for this task
활성 채용 with overlapping task tags are 표시됨.
아직 활성 채용이 없습니다.