Exemplo n.º 1
0
 def setUp(self):
     # Set initial points for sentinels (to simulate infinity)
     big_pos_value = 10E10
     big_neg_value = -1 * big_pos_value
     self.p1 = np.array([big_neg_value, big_pos_value, big_neg_value])
     p2 = np.array([big_pos_value, big_neg_value, big_neg_value])
     # Initialize avltree
     point0 = eaf3D.ApproxPoint(None, 1000, self.p1)
     point1 = eaf3D.ApproxPoint(None, 1001, p2)
     node0 = bst.AVLNode(point0, 1)
     node1 = bst.AVLNode(point1, 0)
     self.t = bst.AVLTree()
     self.t.root = node0
     node0.right = node1
     self.t.count = 2
     # Import more data points
     fname = 'example/run01'
     exset = eaf3D.import_approximate_set(fname)
     x, m = eaf3D.multiset_sum([exset])
     # Q is X sorted in ascending order of the z coordinate
     self.qstack = Stack()
     xintoq = sorted(x.values(), key=attrgetter('z'))
     for i in range(len(xintoq)):
         self.qstack.push(xintoq[i])
     # Add new data points to tree
     for i in range(4):
         p = self.qstack.pop()
         self.t.insert(p)
Exemplo n.º 2
0
 def test_remove_node_case3_left_is_rightmost(self):
     # Set up tree to test case 3 when the left node is the rightmost
     tree = bst.AVLTree()
     point0 = eaf3D.ApproxPoint(1, 1, np.array([4, 12.67, 0]))
     tree.set_newroot(point0)
     # Set initial points for sentinels (to simulate infinity)
     big_pos_value = 10E10
     big_neg_value = -1 * big_pos_value
     p1 = np.array([big_neg_value, big_pos_value, big_neg_value])
     p2 = np.array([big_pos_value, big_neg_value, big_neg_value])
     # Initialize avltree
     point1 = eaf3D.ApproxPoint(None, 1000, p1)
     av1 = bst.AVLNode(point1, balance=1)
     tree.root.left = av1
     point2 = eaf3D.ApproxPoint(None, 1001, p2)
     av2 = bst.AVLNode(point2, balance=-1)
     tree.root.right = av2
     point3 = eaf3D.ApproxPoint(1, 2, np.array([3, 20.21, 0]))
     av3 = bst.AVLNode(point3)
     tree.root.left.right = av3
     point4 = eaf3D.ApproxPoint(1, 3, np.array([5, 10.42, 0]))
     av4 = bst.AVLNode(point4)
     tree.root.right.left = av4
     tree.count = 5
     tree.remove_node(tree.root)
     tree.remove_node(tree.root)
     self.assertEqual(tree.root, av4)
     self.check_node_balances(tree)
Exemplo n.º 3
0
 def test_adjustBalances_negative(self):
     for i in range(4):
         self.qstack.pop()
     point = self.qstack.pop()
     (pivot, theStack, parent, found) = self.t.search(point)
     newNode = bst.AVLNode(point)
     self.t.adjustBalances_add(theStack, pivot, newNode)
     self.assertEqual(pivot.balance, -2)