মূল কনটেন্টে যান
🧩
লোকাল DSA
প্যাটার্নটপিক 5 · Trees

5.5 Lowest Common Ancestor (LCA)

চিনবেন কীভাবে
"common ancestor", "distance between nodes", "kth smallest in BST" — দুই নোডের মিলনবিন্দু বা BST-র order property
Demo · approach · কোড — আগে নিজে চেষ্টা, আটকালে খুলুন

Demo: Lowest Common Ancestor of a Binary TreeLC 236 (Medium — Amazon/Facebook/Microsoft High)

Statement (Demo): binary tree-এর root এবং দুটো node pq দেওয়া — node দুটোর Lowest Common Ancestor (LCA) বের করুন। (LCA হলো এমন সর্বনিম্ন নোড যার subtree-তে pq উভয়ই অবস্থান করে।) উদাহরণ: root=[3,5,1,6,2,0,8], p=5, q=1 → node 3 | ⚡ n ≤ 10⁵, সব values unique

Approach: প্রতিটা নোড থেকে জিজ্ঞেস করুন — p বা q কি আমার subtree-তে? দুই পাশ থেকেই non-null ফেরত এলে এই নোডই LCA; এক পাশ থেকে এলে সেটাই উপরে পাঠান।

function lowestCommonAncestor(root, p, q) {
  if (!root || root === p || root === q) return root;
  const left = lowestCommonAncestor(root.left, p, q);
  const right = lowestCommonAncestor(root.right, p, q);
  if (left && right) return root; // দুই পাশে → এটাই LCA
  return left || right;
}

Complexity: Time O(n), Space O(h)

প্রবলেম

  • Kth Smallest Element in a BSTplan · দিন ০৩৯LC 230
    (inorder = sorted order — k-তম এ থামুন)

    Statement: BST-এর root এবং integer k দেওয়া — tree-র সব value-র মধ্যে k-তম smallest (1-indexed) value-টি খুঁজে বের করুন।
    উদাহরণ: root=[3,1,4,null,2], k=11 | ⚡ n ≤ 10⁴, 1 ≤ k ≤ n

    নোট · ফাঁকা