def test3(self):
     for f in functions:
         self.assertEqual(
             tree_to_list(
                 f(
                     list_to_tree([
                         4, 2, 7, 1, 3, None, None, None, None, None, None
                     ]), 5)), [4, 2, 7, 1, 3, 5], f.__name__)
Esempio n. 2
0
 def test1(self):
     tree = list_to_tree([7, 3, 15, None, None, 9, 20])
     for bst in (BSTIterator1(tree), BSTIterator2(tree),
                 BSTIterator3(tree)):
         self.assertEqual(bst.next(), 3)
         self.assertEqual(bst.next(), 7)
         self.assertEqual(bst.hasNext(), True)
         self.assertEqual(bst.next(), 9)
         self.assertEqual(bst.hasNext(), True)
         self.assertEqual(bst.next(), 15)
         self.assertEqual(bst.hasNext(), True)
         self.assertEqual(bst.next(), 20)
         self.assertEqual(bst.hasNext(), False)
 def test2(self):
     for f in functions:
         self.assertEqual(
             tree_to_list(f(list_to_tree([40, 20, 60, 10, 30, 50, 70]),
                            25)),
             [40, 20, 60, 10, 30, 50, 70, None, None, 25], f.__name__)
 def test2(self):
     for f in functions:
         root = list_to_tree([10, 5, 15, 3, 7, 13, 18, 1, None, 6])
         self.assertEqual(f(root, 6, 10), 23, f.__name__)
 def test1(self):
     for f in functions:
         root = list_to_tree([10, 5, 15, 3, 7, None, 18])
         self.assertEqual(f(root, 7, 15), 32, f.__name__)
 def test2(self):
     for f in functions:
         self.assertEqual(
             f(list_to_tree([2, None, 3, None, 4, None, 5, None, 6])), 5,
             f.__name__)
 def test(self):
     for f in functions:
         root = list_to_tree([1,2,3,4,5,None,None])
         self.assertEqual(f(root), [[4], [2], [1, 5], [3]], f.__name__)
Esempio n. 8
0
 def test3(self):
     for f in functions:
         self.assertEqual(f(list_to_tree([5,3,6,2,4,None,None,1]), 3), 3, f.__name__)
Esempio n. 9
0
 def test2(self):
     for f in functions:
         self.assertEqual(f(list_to_tree([3, 2, None, 1])), False,
                          f.__name__)
Esempio n. 10
0
 def test1(self):
     for f in functions:
         self.assertEqual(f(list_to_tree([1, 2, 3])), True, f.__name__)
 def test2(self):
     for f in functions:
         self.assertEqual(tree_to_list(f(list_to_tree([5,3,6,2,4,None,7]), 3)),  [5,4,6,2,None,None,7], f.__name__)
Esempio n. 12
0
 def test1(self):
     for f in functions:
         root = list_to_tree([6,2,8,0,4,7,9,None,None,3,5])
         self.assertEqual(f(root, TreeNode(3), TreeNode(7)).val, 6, f.__name__)
Esempio n. 13
0
 def test1(self):
     for f in functions:
         self.assertEqual(tree_to_list(f(list_to_tree([4,2,7,1,3,6,9]))), [4, 7, 2, 9, 6, 3, 1], f.__name__)
 def test2(self):
     for f in functions:
         self.assertEqual(f(list_to_tree([3, 9, 20, None, None, 15, 7])), 3,
                          f.__name__)
Esempio n. 15
0
 def test1(self):
     for f in functions:
         self.assertEqual(f(list_to_tree([2,1,3]), 2), 2, f.__name__)
 def test(self):
     for f in functions:
         root = list_to_tree([3, 9, 20, None, None, 15, 7])
         self.assertEqual(f(root), [[9], [3, 15], [20], [7]], f.__name__)
Esempio n. 17
0
 def test2(self):
     for f in functions:
         self.assertEqual(f(list_to_tree([3,1,4,None,2]), 1), 1, f.__name__)
Esempio n. 18
0
    /  \
   15   7
return its level order traversal as:
[
  [3],
  [9,20],
  [15,7]
]
'''
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right

from typing import Optional, List
from lib import TreeNode, list_to_tree
class Solution:
    def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        res = []
        if root:
            level = [root]
            while level:
                res.append([node.val for node in level])
                level = [leaf for node in level for leaf in (node.left, node.right) if leaf]
        return res
            
root = list_to_tree([3,9,20,None,None,15,7])
print(Solution().levelOrder(root))
 def test1(self):
     for f in functions:
         node = list_to_tree([1, None, 2, 3, None])
         self.assertEqual(f(node), [1, 2, 3], f.__name__)
#         self.val = x
#         self.left = None
#         self.right = None

from typing import Optional, List
from lib import TreeNode, list_to_tree


class Solution:
    def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        res = []
        if root:
            level = [root]
            n = 0
            while level:
                level_vals = [node.val for node in level]
                if n % 2:
                    level_vals = level_vals[::-1]
                res.append(level_vals)
                level = [
                    leaf for node in level for leaf in (node.left, node.right)
                    if leaf
                ]
                n += 1
        return res


# test
print(Solution().zigzagLevelOrder(list_to_tree([3, 9, 20, None, None, 15, 7])))
print(Solution().zigzagLevelOrder(list_to_tree([])))
 def test(self):
     for f in functions:
         root = list_to_tree([3, 5, 1, 6, 2, 0, 8, None, None, 7, 4])
         p = root.left.left
         q = root.left.right.right
         self.assertEqual(f(root, p, q).val, 5, f.__name__)
Esempio n. 22
0
 def test3(self):
     for f in functions:
         self.assertEqual(f(list_to_tree([1, 2, 2, None, 3, 3, None])),
                          True, f.__name__)