মান ল করুন একটি বাইনারি ট্রি, আমাদের দুটি সংখ্যার একটি তালিকা ফেরত দিতে হবে যেখানে প্রথম সংখ্যাটি ট্রিতে লিফের সংখ্যা এবং দ্বিতীয় সংখ্যাটি নন-লিফ নোডের সংখ্যা।
যদি ইনপুট হয়:

তবে আউটপুট হবে (3, 2), কারণ ৩টি লিফ এবং ২টি নন-লিফ নোড আছে।
এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:
- যদি n null হয়, তবে (0, 0) ফেরত দিন।
- যদি n.left এবং n.right null হয়, তবে (1, 0) ফেরত দিন।
- left := solve(n.left), right := solve(n.right)
- (left[0] + right[0], 1 + left[1] + right[1]) ফেরত দিন।
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:
উদাহরণ
class TreeNode: def __init__(self, data, left = None, right = None): self.val = data self.left = left self.right = right class Solution: def solve(self, n): if not n: return 0, 0 if not n.left and not n.right: return 1, 0 left, right = self.solve(n.left), self.solve(n.right) return left[0] + right[0], 1 + left[1] + right[1] ob = Solution() root = TreeNode(6) root.left = TreeNode(2) root.right = TreeNode(6) root.right.left = TreeNode(10) root.right.right = TreeNode(2) print(ob.solve(root))
ইনপুট
root = TreeNode(6) root.left = TreeNode(2) root.right = TreeNode(6) root.right.left = TreeNode(10) root.right.right = TreeNode(2)
আউটপুট
(3, 2)