def main():

    list1 = [5, 2, 8, 1, 3, 7, 9]
    list2 = [4, 0, 6]

    tree1 = TreeNode.list2tree(list1)
    tree2 = TreeNode.list2tree(list2)

    result = get_two_trees_inorder(tree1, tree2)
    print(result)
Пример #2
0
def main():

    root1 = [5,2,8,1,3,7,9]

    tree = TreeNode.list2tree(root1)

    # result = tree2list(tree)
    # print(result)

    dfs(tree)
Пример #3
0
def main():
    input_list = [
        [5, 2, 8, 1, 3, 7, 9],
        [2, 1, 3],
    ]

    for lst in input_list:
        tree = TreeNode.list2tree(lst)

        result = get_inorder_iterative(tree)
        print(f"{lst} -> {result}")
Пример #4
0
def test_1():
    sol = Solution()
    tree = TreeNode.list2tree([1, 2, 3])
    assert sol.findBottomLeftValue(tree) == 2
Пример #5
0
    def insertIntoBST(self, root: TreeNode, val: int) -> TreeNode:
        def dfs(tree, val):
            if tree is None:
                pass

            if val < tree.val:
                if tree.left:
                    dfs(tree.left, val)
                else:
                    tree.left = TreeNode(val)
            if val > tree.val:
                if tree.right:
                    dfs(tree.right, val)
                else:
                    tree.right = TreeNode(val)

        dfs(root, val)
        return root


if __name__ == '__main__':

    input_list = [(5, [4, 2, 7, 1, 3])]

    sol = Solution()

    for inp in input_list:
        tree = TreeNode.list2tree(inp[1])
        new_tree = sol.insertIntoBST(tree, inp[0])
        new_tree.printTree_bfs()
Пример #6
0
        
        result = []        
        queue = [(0, root)]
        while queue != []:
            level, curr = queue.pop(0)
            if level >= len(result):
                if curr is not None:
                    result.append([curr.val])
            else:
                result[level].append(curr.val)
            
            for c in [curr.left, curr.right]:
                if c is not None:
                    queue.append((level+1, c))

        for i in range(1,len(result),2):
            result[i] = result[i][::-1]

        return result

if __name__ == '__main__':

    input_list = [
        [3,9,20,None,None,15,7],
    ]

    sol = Solution()
    for inp in input_list:
        root = TreeNode.list2tree(inp)
        result = sol.zigzagLevelOrder(root)
        print(result)
Пример #7
0
                        if curr.left:
                            stack.append((level + 1, curr.left))
                    if curr.right:
                        curr.right = pruneLeave(curr.right)
                        if curr.right:
                            stack.append((level + 1, curr.right))
                    if not curr.left and not curr.right and curr.val == 0:
                        stack.append((level, curr))

        return root


if __name__ == '__main__':
    from binarytree import TreeNode

    sol = Solution()

    input_list = [
        [0, None, 3],
        [1, None, 0, 0, 1],
        [1, 0, 1, 0, 0, 0, 1],
    ]

    for i, x in enumerate(input_list):
        print("=============={}==============".format(x))
        tree = TreeNode.list2tree(x)
        #TreeNode.printTree(tree)

        tree_ = sol.pruneTree(tree)
        TreeNode.printTree_bfs(tree_)