Untitled

 avatar
unknown
python
2 years ago
1.3 kB
4
Indexable
from collections import iter:

class Node:
    def __init__(self, val=None):
        self.val = val
        self.left = None
        self.right = None


    def get_root():
        values = iter([3, 8, 6, 9, None, None, 11, 10, None, None,
                       12, None, None, 7, None, None, 4, 5, None, None, 13, None, None])

        def tree_recur(itr):
            val = next(itr)
            if val is not None:
                node = Node(val)
                node.left = tree_recur(itr)
                node.right = tree_recur(itr)
                return node

        return tree_recur(values)

    def dfids():
        root = get_root()
        res = float("inf")

        def dfids_search(node, depth, limit):
            if depth <= limit and node is not None:
                val = node.val
                if val == 12:
                    nonlocal res
                    res = min(res, depth)
                else:
                    dfids_search(node.left, depth + 1, limit)
                    dfids_search(node.right, depth + 1, limit)

        for limit in range(1, 5):
            dfids_search(root, 0, limit)
            if res < float("inf"):
                return res
        return -1
Editor is loading...