ধরুন আমাদের একটি বাইনারি গাছ আছে; আমাদের পরীক্ষা করতে হবে সব পাতা একই স্তরে আছে কি না।
সুতরাং, যদি ইনপুট মত হয়
তাহলে আউটপুট হবে True
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন dfs() সংজ্ঞায়িত করুন। এটি রুট নেবে, d
-
যদি রুট শূন্য না হয়, তাহলে
-
যদি রুটের বাম অংশ নাল হয় এবং রুটের ডানদিকে শূন্য হয়, তাহলে
-
গভীরতার শেষে d ঢোকান
-
-
অন্যথায়,
-
dfs(রুটের বামে, d + 1)
-
dfs(রুটের ডানদিকে, d + 1)
-
-
-
প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
-
গভীরতা :=একটি নতুন তালিকা
-
dfs(root, 0)
-
গভীরতার শুধুমাত্র একটি মান থাকলে সত্য ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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