Back to Freecodecamp

Step 28

curriculum/challenges/english/blocks/learn-tree-traversal-by-building-a-binary-search-tree/65c644829cfb63acf3479d09.md

latest1.6 KB
Original Source

--description--

Insert the nodes in the list nodes into the bst instance by iterating over the list and calling the insert method on each node in the list. Use node as the iteration variable.

--hints--

You should have a for node in nodes loop.

js
({ test: () => (runPython(`assert _Node(_code).find_for_loops()[0].find_for_vars().is_equivalent("node") and _Node(_code).find_for_loops()[0].find_for_iter().is_equivalent("nodes")`)) });

You should have bst.insert(node) inside the for loop.

js
({ test: () => (runPython(`assert _Node(_code).find_for("node", "nodes").find_body().is_equivalent("bst.insert(node)")`)) })

--seed--

--seed-contents--

py

class TreeNode:

    def __init__(self, key):
        self.key = key
        self.left = None
        self.right = None


class BinarySearchTree:

    def __init__(self):
        self.root = None

    def _insert(self, node, key):
        if node is None:
            return TreeNode(key)

        if key < node.key:
            node.left = self._insert(node.left, key)
        elif key > node.key:

            node.right = self._insert(node.right, key)
        return node

    def insert(self, key):
        self.root = self._insert(self.root, key)
        
    def _search(self, node, key):
        if node is None or node.key == key:
            return node
        if key < node.key:
            return self._search(node.left, key)
        return self._search(node.right, key)
    
    def search(self, key):
        return self._search(self.root, key)

--fcc-editable-region--
bst = BinarySearchTree()

nodes = [50, 30, 20, 40, 70, 60, 80]

--fcc-editable-region--