Trees — Problem Tracker¶
Trees folder-এর practice ledger, easy → hard সাজানো। Tree problem-গুলো একটা আচারের পুরস্কার দেয়: code করার আগে 5-7 node-এর একটা tree আঁকো, ঠিক করো প্রতিটা recursive call কী return করে (একটা সংখ্যা? একটা boolean? একটা node?), আর কোন visit order লাগবে সেটা চিহ্নিত করো ("Pattern" column একটা hint দেয়)। একটা solve করলে তার Status বদলাও আর ../../templates/ds-problem-note-template.md-র 24-section template দিয়ে reserved Note file-এ একটা পুরো note লেখো। "Inherits from" column প্রতিটা problem-কে তার parent idea-র সাথে map করে — আটকে যাওয়া মানে "গিয়ে parent-টা আবার solve করো।"
Problem-গুলো শুধু official link দিয়ে reference করা; নিজের note-এ প্রতিটা task নিজের ভাষায় লেখো।
| # | Problem | Difficulty | Source | Pattern | Inherits from | Note file | Status |
|---|---|---|---|---|---|---|---|
| 1 | Maximum Depth of Binary Tree — https://leetcode.com/problems/maximum-depth-of-binary-tree/ | Easy | LeetCode | Height (postorder) | factorial-style unwind (../../06-recursion-and-backtracking/) | 001-maximum-depth.md | planned |
| 2 | Binary Tree Inorder Traversal — https://leetcode.com/problems/binary-tree-inorder-traversal/ | Easy | LeetCode | Traversal order | traversal-patterns.md-র DFS trio | 002-inorder-traversal.md | planned |
| 3 | Binary Tree Preorder Traversal — https://leetcode.com/problems/binary-tree-preorder-traversal/ | Easy | LeetCode | Traversal order | Inorder, visit-মুহূর্ত সরানো | 003-preorder-traversal.md | planned |
| 4 | Binary Tree Postorder Traversal — https://leetcode.com/problems/binary-tree-postorder-traversal/ | Easy | LeetCode | Traversal order | Inorder, visit-মুহূর্ত সরানো | 004-postorder-traversal.md | planned |
| 5 | Invert Binary Tree — https://leetcode.com/problems/invert-binary-tree/ | Easy | LeetCode | Tree shape | Swap + leap of faith | 005-invert-binary-tree.md | planned |
| 6 | Same Tree — https://leetcode.com/problems/same-tree/ | Easy | LeetCode | Pair recursion | Subtree comparison pattern | 006-same-tree.md | planned |
| 7 | Symmetric Tree — https://leetcode.com/problems/symmetric-tree/ | Easy | LeetCode | Pair recursion (mirrored) | Same Tree, পাশগুলো cross করে | 007-symmetric-tree.md | planned |
| 8 | Path Sum — https://leetcode.com/problems/path-sum/ | Easy | LeetCode | Path (carry state down) | Remaining target-এর উপর decrease-and-conquer | 008-path-sum.md | planned |
| 9 | Search in a Binary Search Tree — https://leetcode.com/problems/search-in-a-binary-search-tree/ | Easy | LeetCode | BST property | Binary search, structure হিসেবে | 009-search-in-bst.md | planned |
| 10 | Balanced Binary Tree — https://leetcode.com/problems/balanced-binary-tree/ | Easy | LeetCode | Height + verdict | Maximum Depth, দুটো fact return করো | 010-balanced-binary-tree.md | planned |
| 11 | Minimum Depth of Binary Tree — https://leetcode.com/problems/minimum-depth-of-binary-tree/ | Easy | LeetCode | Level order early-exit | BFS সবচেয়ে কাছেরটা আগে পায় (../../04-stack-and-queue/) | 011-minimum-depth.md | planned |
| 12 | Binary Tree Level Order Traversal — https://leetcode.com/problems/binary-tree-level-order-traversal/ | Medium | LeetCode | Level order (queue) | ../../04-stack-and-queue/-এর queue | 012-level-order-traversal.md | planned |
| 13 | Binary Tree Right Side View — https://leetcode.com/problems/binary-tree-right-side-view/ | Medium | LeetCode | Level order | Level Order, প্রতি level-এর শেষটা রাখো | 013-right-side-view.md | planned |
| 14 | Validate Binary Search Tree — https://leetcode.com/problems/validate-binary-search-tree/ | Medium | LeetCode | BST bounds | concept.md-র whole-subtree ফাঁদটা | 014-validate-bst.md | planned |
| 15 | Kth Smallest Element in a BST — https://leetcode.com/problems/kth-smallest-element-in-a-bst/ | Medium | LeetCode | Inorder = sorted | Inorder traversal + early stop | 015-kth-smallest-bst.md | planned |
| 16 | Lowest Common Ancestor of a BST — https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/ | Medium | LeetCode | BST property + LCA | BST search, একসাথে দুটো target | 016-lca-of-bst.md | planned |
| 17 | Lowest Common Ancestor of a Binary Tree — https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/ | Medium | LeetCode | LCA (general, postorder) | LCA of BST, ordering সরিয়ে | 017-lca-of-binary-tree.md | planned |
| 18 | Diameter of Binary Tree — https://leetcode.com/problems/diameter-of-binary-tree/ | Medium | LeetCode | Diameter via height | Maximum Depth + side-channel update | 018-diameter-of-binary-tree.md | planned |
| 19 | Path Sum II — https://leetcode.com/problems/path-sum-ii/ | Medium | LeetCode | Path + backtracking | Path Sum + choose/explore/un-choose (../../06-recursion-and-backtracking/) | 019-path-sum-ii.md | planned |
| 20 | Subtree of Another Tree — https://leetcode.com/problems/subtree-of-another-tree/ | Medium | LeetCode | Subtree comparison | Same Tree, প্রতিটা node-এ প্রয়োগ করা | 020-subtree-of-another-tree.md | planned |
| 21 | Construct Binary Tree from Preorder and Inorder Traversal — https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ | Medium | LeetCode | Construction | Preorder = top-down + inorder split (hash index, ../../05-hashing/ থেকে) | 021-construct-from-pre-in.md | planned |
| 22 | Subordinates — https://cses.fi/problemset/ (CSES, task name: Subordinates) | Medium | CSES | Subtree sizes (general tree) | Adjacency list-এর উপর count_nodes | 022-cses-subordinates.md | planned |
| 23 | Binary Tree Maximum Path Sum — https://leetcode.com/problems/binary-tree-maximum-path-sum/ | Hard | LeetCode | Diameter idea + values | Diameter, negative-pruning সহ | 023-max-path-sum.md | planned |
| 24 | Serialize and Deserialize Binary Tree — https://leetcode.com/problems/serialize-and-deserialize-binary-tree/ | Hard | LeetCode | Preorder construction | Preorder + None markers | 024-serialize-deserialize.md | planned |
| 25 | Tree Diameter — https://cses.fi/problemset/ (CSES, task name: Tree Diameter) | Hard | CSES | Diameter at CP scale | Diameter of Binary Tree, general tree, deep recursion সামলানো | 025-cses-tree-diameter.md | planned |
এই tracker কীভাবে ব্যবহার করবে¶
- Status-গুলো:
planned→attempted→solved→revisit(এক সপ্তাহ পরে cold অবস্থায় আবার solve করেছ)। - প্রতিটা note-কে উত্তর দিতেই হবে: একটা recursive call কী return করে, আর কাজটা কোন traversal-মুহূর্তে ঘটে (arrival / between / departure / by level)? এই দুটো প্রশ্নই tree-তে সাবলীলতা।
- Problem 1, 12, 14, 16, আর 18 মিলে canonical interview five — ওই note-গুলো interview-ready বানাও।
- CSES row-গুলোতে input আসবে edge list হিসেবে: adjacency list-এ convert করার practice করো আর গভীর chain-এ Python-এর recursion limit-এর কথা মাথায় রেখো।
- পুরো note format:
../../templates/ds-problem-note-template.md-র 24-section template।