ধরা যাক একটি বাইনারি ট্রি আছে, আমাদের যাচাই করতে হবে সব লিফ নোড একই লেভেলে আছে কিনা।
উদাহরণ ট্রি হলে আউটপুট True।
সমাধানের ধাপসমূহ
- dfs() ফাংশন সংজ্ঞায়িত করুন যা root, d নেয়।
- যদি root null নয়, তবে:
- যদি root.left এবং root.right দুটোই null হয়, depth-এ d অ্যাপেন্ড করুন।
- অন্যথায়, dfs(root.left, d+1) এবং dfs(root.right, d+1) কল করুন।
- মূল মেথড থেকে depth := [], dfs(root, 0) কল করুন।
- depth-এ শুধু একটি অনন্য মান থাকলে True ফেরত দিন।
উদাহরণ কোড
class TreeNode:
def __init__(self, value):
self.val = value
self.left = None
self.right = None
class Solution:
def solve(self, root):
self.depth = []
self.dfs(root, 0)
return len(set(self.depth)) == 1
def dfs(self, root, depth):
if root:
if not root.left and not root.right:
self.depth.append(depth)
else:
self.dfs(root.left, depth + 1)
self.dfs(root.right, depth + 1)
ob = Solution()
root = TreeNode(5)
root.left = TreeNode(4)
root.left.left = TreeNode(2)
root.right = TreeNode(10)
root.right.left = TreeNode(7)
root.right.right = TreeNode(15)
print(ob.solve(root))
ইনপুট
root = TreeNode(5) root.left = TreeNode(4) root.left.left = TreeNode(2) root.right = TreeNode(10) root.right.left = TreeNode(7) root.right.right = TreeNode(15)
আউটপুট
True