예제 #1
0
import recover
import tree

if __name__ == "__main__":
    sol = recover.Solution()
    root = tree.construct_tree([4, 2, 6, 1, 5, 3, 7])
    root.traverse_breath_first()
    sol.recover(root)
    root.traverse_breath_first()
예제 #2
0
from tree import TreeNode, construct_tree
import verticalOrder

if __name__ == "__main__":
  root = construct_tree([3,9,8,4,0,1,7,'#','#','#',2,5])
  root.traverse_breath_first()

  sol = verticalOrder.Solution()
  print sol.verticalOrder(root)
def find_target(nums, target):
    l, r = 0, len(nums) - 1
    while l < r:
        tmp = nums[l] + nums[r]
        if tmp == target:
            return True
        elif tmp < target:
            l += 1
        else:
            r -= 1
    return False


if __name__ == '__main__':
    root = construct_tree()
    nums = inorder_traversal(root)
    res = find_target(nums, 9)
    print(res)
"""
一、题目
    给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
二、案例
    输入:
        5
       / \
      3   6
     / \   \
    2   4   7
    Target = 9
    输出: True(因为存在 2 + 7 = 9)
예제 #4
0
    if root is None:
        return root

    in_order(root.left)
    res.append(root.val)
    in_order(root.right)
    return res


def make_tree():
    """
              1
                \
                 2
                /
              3
    """
    root = TreeNode(1)
    root.right = TreeNode(2)
    root.right.left = TreeNode(3)
    return root


if __name__ == '__main__':
    from tree import construct_tree

    tree = construct_tree()
    # tree = make_tree()
    # print(in_order(tree))
    print(in_order_traversal2(tree))
예제 #5
0
from tree import TreeNode, construct_tree

if __name__ == "__main__":
    root = construct_tree(
        [1, 2, 6, 3, 4, '#', '#', 7, 8, 5, '#', '#', '#', 9, '#', 10])
    print root
    root.traverse_pre_order()
    root.traverse_breath_first()