feat: populate note files with problem descriptions and code stubs
Add populate-notes.mjs that fetches problem descriptions and Python/C++ code stubs from LeetCode's GraphQL API. Populated all 197 NeetCode 150 note files with: - Problem description (examples, constraints) - Python code stub (function signature) - C++ code stub (function signature + includes) API responses cached in leetcode/.cache/leetcode/ for instant re-runs.
This commit is contained in:
@@ -1,18 +1,101 @@
|
||||
#+PROPERTY: STUDY_DECK_02
|
||||
* TODO 0297. Serialize And Deserialize Binary Tree :hard:
|
||||
:PROPERTIES:
|
||||
:NEETCODE: [[file:../../roadmap.org::*0297. Serialize And Deserialize Binary Tree][Roadmap]]
|
||||
:NEETCODE: [[file:../../roadmap.org::*0297. Serialize And Deserialize Binary Tree][0297. Serialize And Deserialize Binary Tree]]
|
||||
:END:
|
||||
|
||||
Serialization is the process of converting a data structure or object into a sequence of bits so that it can be stored in a file or memory buffer, or transmitted across a network connection link to be reconstructed later in the same or another computer environment.
|
||||
|
||||
Design an algorithm to serialize and deserialize a binary tree. There is no restriction on how your serialization/deserialization algorithm should work. You just need to ensure that a binary tree can be serialized to a string and this string can be deserialized to the original tree structure.
|
||||
|
||||
*Clarification:* The input/output format is the same as how LeetCode serializes a binary tree. You do not necessarily need to follow this format, so please be creative and come up with different approaches yourself.
|
||||
|
||||
*Example 1:*
|
||||
|
||||
|
||||
#+begin_src
|
||||
Input: root = [1,2,3,null,null,4,5]
|
||||
Output: [1,2,3,null,null,4,5]
|
||||
#+end_src
|
||||
|
||||
|
||||
*Example 2:*
|
||||
|
||||
|
||||
#+begin_src
|
||||
Input: root = []
|
||||
Output: []
|
||||
#+end_src
|
||||
|
||||
|
||||
*Constraints:*
|
||||
|
||||
- The number of nodes in the tree is in the range ~[0, 10^{4}]~.
|
||||
|
||||
- ~-1000 <= Node.val <= 1000~
|
||||
|
||||
** TODO Approach
|
||||
Write your approach here.
|
||||
|
||||
** TODO Python
|
||||
#+begin_src python
|
||||
# Definition for a binary tree node.
|
||||
# class TreeNode(object):
|
||||
# def __init__(self, x):
|
||||
# self.val = x
|
||||
# self.left = None
|
||||
# self.right = None
|
||||
|
||||
class Codec:
|
||||
|
||||
def serialize(self, root):
|
||||
"""Encodes a tree to a single string.
|
||||
|
||||
:type root: TreeNode
|
||||
:rtype: str
|
||||
"""
|
||||
|
||||
|
||||
def deserialize(self, data):
|
||||
"""Decodes your encoded data to tree.
|
||||
|
||||
:type data: str
|
||||
:rtype: TreeNode
|
||||
"""
|
||||
|
||||
|
||||
# Your Codec object will be instantiated and called as such:
|
||||
# ser = Codec()
|
||||
# deser = Codec()
|
||||
# ans = deser.deserialize(ser.serialize(root))
|
||||
#+end_src
|
||||
|
||||
** TODO C++
|
||||
#+begin_src cpp
|
||||
/**
|
||||
* Definition for a binary tree node.
|
||||
* struct TreeNode {
|
||||
* int val;
|
||||
* TreeNode *left;
|
||||
* TreeNode *right;
|
||||
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
|
||||
* };
|
||||
*/
|
||||
class Codec {
|
||||
public:
|
||||
|
||||
// Encodes a tree to a single string.
|
||||
string serialize(TreeNode* root) {
|
||||
|
||||
}
|
||||
|
||||
// Decodes your encoded data to tree.
|
||||
TreeNode* deserialize(string data) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
// Your Codec object will be instantiated and called as such:
|
||||
// Codec ser, deser;
|
||||
// TreeNode* ans = deser.deserialize(ser.serialize(root));
|
||||
#+end_src
|
||||
|
||||
Reference in New Issue
Block a user