1- from pydatastructs import MAryTree
2- from pydatastructs .trees .m_ary_trees import ParentPointerTree
1+ from pydatastructs .utils .misc_util import Backend
2+ from pydatastructs .trees .m_ary_trees import MAryTree , ParentPointerTree
3+
34
45def test_MAryTree ():
56 m = MAryTree (1 , 1 )
67 assert str (m ) == '[(1, 1)]'
78
8- def test_ParentPointerTree ():
9- pass
9+
10+ def _test_ParentPointerTree (backend ):
11+ PPT = ParentPointerTree
12+
13+ tree = PPT (1 , "root" , backend = backend )
14+ assert tree .root_idx == 0
15+ assert tree .tree [0 ].key == 1
16+ assert tree .tree [0 ].data == "root"
17+ assert tree .tree [0 ].parent is None
18+
19+ tree .insert (1 , 2 , "child_1" )
20+ tree .insert (1 , 3 , "child_2" )
21+ tree .insert (1 , 4 , "child_3" )
22+ assert tree .size == 4
23+ assert tree .tree [1 ].key == 2
24+ assert tree .tree [1 ].data == "child_1"
25+ assert tree .tree [1 ].parent == tree .tree [0 ]
26+ assert tree .tree [2 ].key == 3
27+ assert tree .tree [2 ].data == "child_2"
28+ assert tree .tree [2 ].parent == tree .tree [0 ]
29+ assert tree .tree [3 ].key == 4
30+ assert tree .tree [3 ].data == "child_3"
31+ assert tree .tree [3 ].parent == tree .tree [0 ]
32+
33+ assert tree .search (2 ).data == "child_1"
34+ assert tree .search (3 ).data == "child_2"
35+ assert tree .search (4 ).data == "child_3"
36+ assert tree .search (5 ) is None
37+ assert tree .search (2 , parent = True ) == tree .tree [0 ]
38+
39+ tree .insert (2 , 5 , "child_4" )
40+ tree .insert (2 , 6 , "child_5" )
41+ assert tree .least_common_ancestor (5 , 6 ) == tree .tree [1 ]
42+ assert tree .least_common_ancestor (5 , 3 ) == tree .tree [0 ]
43+ assert tree .least_common_ancestor (2 , 4 ) == tree .tree [0 ]
44+ assert tree .least_common_ancestor (5 , 7 ) is None
45+
46+ assert tree .delete (5 ) is True
47+ assert tree .search (5 ) is None
48+ assert tree .size == 5
49+ assert tree .delete (6 ) is True
50+ assert tree .search (6 ) is None
51+ assert tree .size == 4
52+ assert tree .delete (10 ) is None
53+
54+ expected = '''[(1, 'root', 'None'), (2, 'child_1', "(1, 'root')"), (3, 'child_2', "(1, 'root')"), (4, 'child_3', "(1, 'root')")]'''
55+ assert str (tree ) == expected
56+
57+ empty_tree = PPT (backend = backend )
58+ assert empty_tree .size == 0
59+ assert empty_tree .search (1 ) is None
60+ assert empty_tree .delete (1 ) is None
61+ assert empty_tree .least_common_ancestor (1 , 2 ) is None
62+
63+ empty_tree .insert (None , 7 , "child_6" )
64+
65+ expected = '''[(7, 'child_6', 'None')]'''
66+ assert str (empty_tree ) == expected
67+
68+ def test_ParentPointerTree ():
69+ _test_ParentPointerTree (Backend .PYTHON )
0 commit comments