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 表示.
有効な求人はまだありません。