Exemple #1
0
 def helper(self, nums):
     if len(nums) == 0:
         return None
     pivot = len(nums) // 2
     root = TreeNode(nums[pivot])
     root.left = self.helper(nums[:pivot])
     root.right = self.helper(nums[pivot + 1:])
     return root
Exemple #2
0
def test_generateTrees3():
    n = 1
    expect = sorted([TreeNode.integerListToString(nums) for nums in [[1]]])
    actual = solution.generateTrees(n)
    assert len(actual) == len(expect)
    actual = sorted([
        TreeNode.integerListToString(nums)
        for nums in [TreeNode.treeToList(node) for node in actual]
    ])
    assert actual == expect
Exemple #3
0
  def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
    if preorder is None or len(preorder) != len(inorder) or len(preorder) == 0:
      return None

    i = 0
    while i < len(inorder) and inorder[i] != preorder[0]:
      i += 1
    root = TreeNode(preorder[0])
    root.left = self.buildTree(preorder[1:i + 1], inorder[0:i])
    root.right = self.buildTree(preorder[i + 1:], inorder[i + 1:])
    return root
Exemple #4
0
 def flatten(self, root: TreeNode) -> None:
     """
 Do not return anything, modify root in-place instead.
 """
     tail = TreeNode(0)
     queue = [root] if root else []
     while queue:
         node = queue.pop()
         if node.right:
             queue.append(node.right)
         if node.left:
             queue.append(node.left)
         node.left = None
         tail.right = node
         tail = tail.right
Exemple #5
0
def test_generateTrees1():
    root = TreeNode.stringToTreeNode(
        "[5, 4, 8, 11, null, 13, 4, 7, 2, null, null, 5, 1]")
    sum = 22
    expect = [[5, 8, 4, 5], [5, 4, 11, 2]]
    actual = solution.pathSum(root, sum)
    assert sorted(actual) == sorted(expect)
Exemple #6
0
    def generate(self, start, end):
        if start > end:
            return [None]

        if start == end:
            return [TreeNode(start)]

        result = []
        for num in range(start, end + 1):
            lefts = self.generate(start, num - 1)
            rights = self.generate(num + 1, end)
            for left in lefts:
                for right in rights:
                    root = TreeNode(num)
                    root.left = left
                    root.right = right
                    result.append(root)
        return result
Exemple #7
0
def test_iterator():
    root = TreeNode.stringToTreeNode("[7,3,15,null,null,9,20]")
    iterator = BSTIterator(root)
    assert iterator.next() == 3
    assert iterator.next() == 7
    assert iterator.hasNext()
    assert iterator.next() == 9
    assert iterator.hasNext()
    assert iterator.next() == 15
    assert iterator.hasNext()
    assert iterator.next() == 20
    assert not iterator.hasNext()
Exemple #8
0
def test_generateTrees1():
    root = TreeNode.stringToTreeNode("[3,9,20,null,null,15,7]")
    expect = [[3], [20, 9], [15, 7]]
    actual = solution.zigzagLevelOrder(root)
    assert actual == expect
Exemple #9
0
def test_generateTrees2():
    root = TreeNode.stringToTreeNode("[]")
    expect = []
    actual = solution.zigzagLevelOrder(root)
    assert actual == expect
Exemple #10
0
def test_generateTrees3():
    root = TreeNode.stringToTreeNode("[1,2,3,4,null,null,5]")
    expect = [[1], [3, 2], [4, 5]]
    actual = solution.zigzagLevelOrder(root)
    assert actual == expect
Exemple #11
0
def test_isValidBST5():
  root = TreeNode.stringToTreeNode("[10,5,15,null,null,6,20]")
  actual = solution.isValidBST(root)
  assert not actual
Exemple #12
0
def test_isValidBST1():
  root = TreeNode.stringToTreeNode("[2,1,3]")
  actual = solution.isValidBST(root)
  assert actual
Exemple #13
0
def test_sumNumbers1():
    root = TreeNode.stringToTreeNode('[1,2,3]')
    expect = 25
    actual = solution.sumNumbers(root)
    assert actual == expect
Exemple #14
0
def test_isValidBST4():
  root = TreeNode.stringToTreeNode("[0,null,-1]")
  actual = solution.isValidBST(root)
  assert not actual
Exemple #15
0
def test_sumNumbers2():
    root = TreeNode.stringToTreeNode('[4,9,0,5,1]')
    expect = 1026
    actual = solution.sumNumbers(root)
    assert actual == expect
Exemple #16
0
def test_buildTree1():
    preorder = [3, 9, 20, 15, 7]
    inorder = [9, 3, 15, 20, 7]
    expect = TreeNode.stringToTreeNode("[3,9,20,null,null,15,7]")
    actual = solution.buildTree(preorder, inorder)
    assert TreeNode.isSame(actual, expect)
Exemple #17
0
def test_buildTree1():
  head = ListNode.stringToListNode("[-10,-3,0,5,9]")
  expect = TreeNode.stringToTreeNode("[0,-3,9,-10,null,5]")
  actual = solution.sortedListToBST(head)
  assert TreeNode.isSame(actual, expect)
Exemple #18
0
def test_buildTree1():
    root = TreeNode.stringToTreeNode("[1,2,5,3,4,null,6]")
    expect = TreeNode.stringToTreeNode(
        "[1,null,2,null,3,null,4,null,5,null,6]")
    solution.flatten(root)
    assert TreeNode.isSame(root, expect)
Exemple #19
0
def test_buildTree2():
    root = TreeNode.stringToTreeNode("[]")
    expect = TreeNode.stringToTreeNode("[]")
    solution.flatten(root)
    assert TreeNode.isSame(root, expect)
Exemple #20
0
def test_buildTree1():
  inorder = [9, 3, 15, 20, 7]
  postorder = [9, 15, 7, 20, 3]
  expect = TreeNode.stringToTreeNode("[3,9,20,null,null,15,7]")
  actual = solution.buildTree(inorder, postorder)
  assert TreeNode.isSame(actual, expect)
Exemple #21
0
def test_sumNumbers3():
    root = TreeNode.stringToTreeNode('[]')
    expect = 0
    actual = solution.sumNumbers(root)
    assert actual == expect
Exemple #22
0
def test_buildTree2():
    preorder = []
    inorder = [9]
    expect = TreeNode.stringToTreeNode("[]")
    actual = solution.buildTree(preorder, inorder)
    assert TreeNode.isSame(actual, expect)
Exemple #23
0
def test_preorderTraversal1():
    root = TreeNode.stringToTreeNode("[1,null,2,3]")
    expect = [1, 2, 3]
    actual = solution.preorderTraversal(root)
    assert actual == expect
Exemple #24
0
def test_inorderTraversal2():
  root = TreeNode.stringToTreeNode("[1,2,3]")
  expect = [2, 1, 3]
  actual = solution.inorderTraversal(root)
  assert actual == expect
Exemple #25
0
def test_sumNumbers4():
    root = TreeNode.stringToTreeNode('[1, null, 2]')
    expect = 12
    actual = solution.sumNumbers(root)
    assert actual == expect
Exemple #26
0
def test_preorderTraversal3():
    root = TreeNode.stringToTreeNode("[]")
    expect = []
    actual = solution.preorderTraversal(root)
    assert actual == expect
Exemple #27
0
def test_isValidBST2():
  root = TreeNode.stringToTreeNode("[5,1,4,null,null,3,6]")
  actual = solution.isValidBST(root)
  assert not actual
Exemple #28
0
def test_rightSideView1():
    root = TreeNode.stringToTreeNode("[1,2,3,null,5,null,4]")
    expect = [1, 3, 4]
    actual = solution.rightSideView(root)
    assert actual == expect
Exemple #29
0
def test_isValidBST3():
  root = TreeNode.stringToTreeNode("[1,1,1]")
  actual = solution.isValidBST(root)
  assert not actual