কম্পিউটার টিউটোরিয়াল

পাইথনে বাইনারি ট্রির সব লিফ নোড একই লেভেলে আছে কিনা যাচাই করার প্রোগ্রাম


ধরা যাক একটি বাইনারি ট্রি আছে, আমাদের যাচাই করতে হবে সব লিফ নোড একই লেভেলে আছে কিনা।

উদাহরণ ট্রি হলে আউটপুট 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
  1. পাইথনে বাইনারি ট্রিতে প্রতিটি নন-লিফ নোডের মান তার চাইল্ডদের যোগফলের সমান কিনা যাচাই করা

  2. পাইথনে ট্রির ইনঅর্ডার সিকোয়েন্স প্যালিনড্রোম কিনা যাচাই করার প্রোগ্রাম

  3. পাইথনে বাইনারি ট্রি BST কিনা যাচাই করার প্রোগ্রাম

  4. পাইথনে BST-এ একটি মান আছে কিনা যাচাই করার প্রোগ্রাম