ধরুন আমাদের একটি বাইনারি গাছ আছে; আমাদের নোডের সংখ্যা খুঁজে বের করতে হবে যেগুলো একমাত্র শিশু। যেমনটি আমরা জানি যে একটি নোড x কে একমাত্র শিশু নোড বলা হয় যখন এর পিতামাতার ঠিক একটি সন্তান থাকে যা হল x।
সুতরাং, যদি ইনপুট মত হয়
তাহলে আউটপুট হবে 2 কারণ 8 এবং 6 একমাত্র সন্তান।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- যদি রুট নাল হয়, তাহলে
- রিটার্ন 0
- d :=একটি ডবল শেষ সারি
- d-এর শেষে রুট ঢোকান
- গণনা :=0
- যখন d খালি নয়, কর
- বর্তমান :=ডি এর বাম উপাদান এবং বাম উপাদান মুছুন
- কারেন্টের বাম অংশ যদি শূন্য না হয়, তাহলে
- ডি-তে কারেন্টের বাঁদিকে ঢোকান
- যদি কারেন্টের ডানদিকে শূন্য হয়, তাহলে
- গণনা :=গণনা + 1
- যদি কারেন্টের ডানদিকে শূন্য না হয়, তাহলে
- ডি-তে কারেন্টের ডানদিকে ঢোকান
- কারেন্টের বাম অংশ যদি শূন্য হয়, তাহলে
- গণনা :=গণনা + 1
- রিটার্ন গণনা
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ কোড
from collections import deque class TreeNode: def __init__(self, data, left = None, right = None): self.data = data self.left = left self.right = right class Solution: def solve(self, root): if not root: return 0 d = deque() d.append(root) count = 0 while d: current = d.popleft() if current.left: d.append(current.left) if not current.right: count += 1 if current.right: d.append(current.right) if not current.left: count += 1 return count ob = Solution() root = TreeNode(9) root.left = TreeNode(7) root.right = TreeNode(10) root.left.right = TreeNode(8) root.right.right = TreeNode(6) print(ob.solve(root))
ইনপুট
root = TreeNode(9)root.left = TreeNode(7)
root.right = TreeNode(10)
root.left.right = TreeNode(8)
root.right.right = TreeNode(6)
আউটপুট
2