示例#1
0
from BinaryTree.SymmetricTree.Recursive101 import Solution as SymTree_recursive
from BinaryTree.SymmetricTree.Iterative101 import Solution as SymTree_iterative
import BinaryTree.TreeNodeModule as tn

testcase = tn.stringToTreeNode("[1,2,2,3,4,4,3]")
ans = True

testcase2 = tn.stringToTreeNode("[1,2,2,null,3,null,3]")
ans2 = False

testcase3 = tn.stringToTreeNode("[1,2,2,3,4,4,3,5,6,7,8,8,7,6,5]")
ans3 = True

testcase4 = tn.stringToTreeNode("[]")
ans4 = True

testcase5 = tn.stringToTreeNode("[1]")
ans5 = True


def test_SymmetricTreeRecursive():
    assert SymTree_recursive().isSymmetric(testcase) == ans
    assert SymTree_recursive().isSymmetric(testcase2) == ans2
    assert SymTree_recursive().isSymmetric(testcase3) == ans3
    assert SymTree_recursive().isSymmetric(testcase4) == ans4
    assert SymTree_recursive().isSymmetric(testcase5) == ans5


def test_SymmetricTreeIterative():
    assert SymTree_iterative().isSymmetric(testcase) == ans
    assert SymTree_iterative().isSymmetric(testcase2) == ans2
示例#2
0
from BinaryTree.PathSum.Naive112 import Solution as PathSum_Naive
import BinaryTree.TreeNodeModule as tn

testcase1 = tn.stringToTreeNode("[5,4,8,11,null,13,4,7,2,null,null,null,1]")
sum1 = 22
ans1 = True

testcase2 = []
sum2 = 1
ans2 = False

testcase3 = tn.stringToTreeNode("[-2,null,-3]")
sum3 = -5
ans3 = True

def test_PathSumNaive():
    assert PathSum_Naive().hasPathSum(testcase1, sum1) == ans1
    assert PathSum_Naive().hasPathSum(testcase2, sum2) == ans2
    assert PathSum_Naive().hasPathSum(testcase3, sum3) == ans3
from BinaryTree.MaximumDepthofBinaryTree.TopDown104 import Solution as TopDown
import BinaryTree.TreeNodeModule as tn
'''
    3
   / \
  9  20
    /  \
   15   7
'''
testTree = tn.stringToTreeNode("[3,9,20,null,null,15,7]")
depthAns = 3
testTree2 = tn.stringToTreeNode("[]")
depthAns2 = 0
testTree3 = tn.stringToTreeNode("[1]")
depthAns3 = 1


def test_TopDown():
    assert TopDown().maxDepth(testTree) == depthAns
    assert TopDown().maxDepth(testTree2) == depthAns2
    assert TopDown().maxDepth(testTree3) == depthAns3


from BinaryTree.MaximumDepthofBinaryTree.BottomUp104 import Solution as BottomUp


def test_BottomUp():
    assert BottomUp().maxDepth(testTree) == depthAns
    assert BottomUp().maxDepth(testTree2) == depthAns2
    assert BottomUp().maxDepth(testTree3) == depthAns3
示例#4
0
from BinaryTree.LowestCommonAncestorofaBinaryTree.Naive236 import Solution as LCA_naive
import BinaryTree.TreeNodeModule as tn

testtree1 = tn.stringToTreeNode("[3,5,1,6,2,0,8,null,null,7,4]")
p1 = tn.TreeNode(5)
q1 = tn.TreeNode(1)
ans1 = 3

testtree2 = tn.stringToTreeNode("[3,5,1,6,2,0,8,null,null,7,4]")
p2 = tn.TreeNode(5)
q2 = tn.TreeNode(4)
ans2 = 5

def test_LCA_naive():
    assert LCA_naive().lowestCommonAncestor(testtree1, p1, q1).val == ans1
    assert LCA_naive().lowestCommonAncestor(testtree2, p2, q2).val == ans2
示例#5
0
import BinaryTree.TreeNodeModule as tn
from BinaryTree.BinaryTreePreorderTraversal.Recursive144 import Solution as preorder_recursive
from BinaryTree.BinaryTreePreorderTraversal.Iterative144 import Solution as preorder_iterative

testcase = []
'''
  1
   \
    2
   /
  3
'''
testcase.append(tn.stringToTreeNode("[1,null,2,3]"))
'''
None
'''
testcase.append(tn.stringToTreeNode("[]"))
'''
    2
   /
  3
 /
1
'''
testcase.append(tn.stringToTreeNode("[2,3,null,1]"))
'''
  3
 / \
1   2
'''
testcase.append(tn.stringToTreeNode("[3,1,2]"))
示例#6
0
from BinaryTree.BinaryTreePaths.Iterative257 import Solution as iterative
from BinaryTree.BinaryTreePaths.Recursive257 import Solution as recursive
import BinaryTree.TreeNodeModule as tn

testtree = tn.stringToTreeNode("[1,2,3,null,5]")
ans = ["1->2->5", "1->3"]


def test_iterative():
    assert iterative().binaryTreePaths(testtree) == ans


def test_recursive():
    assert recursive().binaryTreePaths(testtree) == ans
import BinaryTree.TreeNodeModule as tn
from BinaryTree.BinaryTreeLevelOrderTraversal.BFS102 import Solution as levelorder_BFS

testcase = []
'''
    3
   /  \
  9    20
      /  \
     15   7
'''
testcase.append(tn.stringToTreeNode("[3,9,20,null,null,15,7]"))
'''
None
'''
testcase.append(tn.stringToTreeNode("[]"))

levelOrderAns = []
levelOrderAns.append([[3], [9, 20], [15, 7]])
levelOrderAns.append([])


def test_BFS_LevelOrder():
    for num, case in enumerate(testcase):
        assert levelorder_BFS().levelOrder(case) == levelOrderAns[num]
from BinaryTree.MinimumDepthOfBinaryTree.BFS111 import Solution as BFS
import BinaryTree.TreeNodeModule as tn

raw_testcase = [("[]", 0), ("[1]", 1), ("[3,9,20,null,null,15,7]", 2)]
testcase = [(tn.stringToTreeNode(treeStr), ans)
            for treeStr, ans in raw_testcase]


def test_BFS():
    for root, ans in testcase:
        assert BFS().minDepth(root) == ans
示例#9
0
from BinaryTree.ConstructBinaryTreefromPreorderandInorderTraversal.DivideAndConquer105 import Solution as PreInOrder_DC
from BinaryTree.ConstructBinaryTreefromInorderandPostorderTraversal.DivideAndConquer106 import Solution as InPostOrder_DC
import BinaryTree.TreeNodeModule as tn

inorder = [9, 3, 15, 20, 7]
preorder = [3, 9, 20, 15, 7]
postorder = [9, 15, 7, 20, 3]
treeAns = tn.stringToTreeNode("[3,9,20,null,null,15,7]")

inorder2 = []
preorder2 = []
postorder2 = []
treeAns2 = tn.stringToTreeNode("[]")

#   1
#        4
#     2
#       3

inorder3 = [1, 2, 3, 4]
preorder3 = [1, 4, 2, 3]
postorder3 = [3, 2, 4, 1]
treeAns3 = tn.stringToTreeNode("[1,null,4,2,null,null,3]")


def test_PreorderAndInorderDivideAndConquer():
    assert tn.treeNodeToList(PreInOrder_DC().buildTree(
        preorder, inorder)) == tn.treeNodeToList(treeAns)
    assert tn.treeNodeToList(PreInOrder_DC().buildTree(
        preorder2, inorder2)) == tn.treeNodeToList(treeAns2)
    assert tn.treeNodeToList(PreInOrder_DC().buildTree(
示例#10
0
from BinaryTree.ValidateBinarySearchTree.InorderTraversal098 import Solution as inorder
from BinaryTree.ValidateBinarySearchTree.DFS098 import Solution as dfs
import BinaryTree.TreeNodeModule as tn

testBST = []
testBST.append(tn.stringToTreeNode("[2,1,3]"))
testBST.append(tn.stringToTreeNode("[1,1]"))
testBST.append(tn.stringToTreeNode("[5,1,4,null,null,3,6]"))

answer = []
answer.append(True)
answer.append(False)
answer.append(False)


def test_inorderTraversal():
    for i, case in enumerate(testBST):
        assert inorder().isValidBST(case) == answer[i]


def test_dfs():
    for i, case in enumerate(testBST):
        assert dfs().isValidBST(case) == answer[i]