100. Same Tree
選択した UI 言語に合わせて問題文をロシア語から翻訳します。コードは変更しません。
given корни двух бинарных деревьев p и q. Напишите функцию, чтобы проверить, одинаковы ли они.
Два бинарных дерева считаются одинаковыми, если они структурно идентичны, и узлы имеют одинаковые значения.
例:
Input: p = [1,2,3], q = [1,2,3]
Output: true
C# 解法
照合済み/オリジナルpublic class Solution {
public bool IsSameTree(TreeNode p, TreeNode q) {
if (p == null && q == null)
return true;
if (q == null || p == null)
return false;
if (p.val != q.val)
return false;
return IsSameTree(p.right, q.right) && IsSameTree(p.left, q.left);
}
}
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:
public bool IsSameTree(TreeNode p, TreeNode q) {
if (p == null && q == null)
return true;
if (q == null || p == null)
return false;
if (p.val != q.val)
return false;
return IsSameTree(p.right, q.right) && IsSameTree(p.left, q.left);
}
}
Java 解法
照合済み/オリジナルclass Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if (p == null && q == null) return true;
if (q == null || p == null) return false;
if (p.val != q.val) return false;
return isSameTree(p.right, q.right) && isSameTree(p.left, q.left);
}
}
JavaScript 解法
照合済み/オリジナルvar isSameTree = function (p, q) {
if (p == null && q == null) return true;
if (q == null || p == null) return false;
if (p.val != q.val) return false;
return isSameTree(p.right, q.right) && isSameTree(p.left, q.left);
};
Python 解法
照合済み/オリジナルclass Solution:
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
if not p and not q:
return True
if not q or not p:
return False
if p.val != q.val:
return False
return self.isSameTree(p.right, q.right) and self.isSameTree(
p.left, q.left
)
Go 解法
照合済み/オリジナルtype TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func isSameTree(p *TreeNode, q *TreeNode) bool {
if p == nil && q == nil {
return true
}
if p == nil || q == nil {
return false
}
if p.Val != q.Val {
return false
}
return isSameTree(p.Left, q.Left) && isSameTree(p.Right, q.Right)
}
Algorithm
Самая простая стратегия здесь — использовать рекурсию. Проверьте, не равны ли узлы p и q значению None, и равны ли их значения. Если все проверки пройдены успешно, проделайте то же самое для дочерних узлов рекурсивно.
😎
Vacancies for this task
有効な求人 with overlapping task tags are 表示.
有効な求人はまだありません。