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

পাইথনে বাইনারি ট্রির ডায়ামিটার

একটি বাইনারি ট্রি দেওয়া থাকে। এর ডায়ামিটার বের করতে হবে। ডায়ামিটার হল ট্রিতে যেকোনো দুটি নোডের মধ্যে সর্বোচ্চ দূরত্ব (এজ সংখ্যা)। এটি রুট দিয়ে যেতে পারে নাও। উদাহরণে ট্রি [1,2,3,4,5] এর ডায়ামিটার ৩।

সমাধানের পদ্ধতি

  1. DFS (ডেপথ-ফার্স্ট সার্চ) ব্যবহার করুন।
  2. ans = 0 ইনিশিয়ালাইজ করুন।
  3. dfs(node) ফাংশন লিখুন:
    • যদি নোড না থাকে, ০ রিটার্ন করুন।
    • left = dfs(node.left), right = dfs(node.right)।
    • ans = max(ans, left + right) আপডেট করুন।
    • return max(left, right) + 1 রিটার্ন করুন।
  4. dfs(root) কল করুন এবং ans রিটার্ন করুন।

উদাহরণ কোড

class TreeNode:
    def __init__(self, data, left=None, right=None):
        self.data = data
        self.left = left
        self.right = right

def insert(temp, data):
    que = []
    que.append(temp)
    while len(que):
        temp = que[0]
        que.pop(0)
        if not temp.left:
            temp.left = TreeNode(data)
            break
        else:
            que.append(temp.left)
        if not temp.right:
            temp.right = TreeNode(data)
            break
        else:
            que.append(temp.right)

def make_tree(elements):
    Tree = TreeNode(elements[0])
    for element in elements[1:]:
        insert(Tree, element)
    return Tree

class Solution(object):
    def diameterOfBinaryTree(self, root):
        self.ans = 0
        self.dfs(root)
        return self.ans

    def dfs(self, node):
        if not node:
            return 0
        left = self.dfs(node.left)
        right = self.dfs(node.right)
        self.ans = max(self.ans, right + left)
        return max(left + 1, right + 1)

root = make_tree([1,2,3,4,5])
ob1 = Solution()
print(ob1.diameterOfBinaryTree(root))

ইনপুট

[1,2,3,4,5]

আউটপুট

3
  1. পাইথনে বাইনারি ট্রির Lowest Common Ancestor (সর্বনিম্ন কমন অ্যানসেস্ট্র)

  2. পাইথনে বাইনারি ট্রি ইনঅর্ডার ট্রাভার্সাল

  3. পাইথনে বাইনারি ট্রি ইনভার্ট (Invert Binary Tree)

  4. পাইথনে বাইনারি ট্রির ম্যাক্সিমাম ডেপথ (Maximum Depth of Binary Tree)