Skip to content

Commit

Permalink
FINALLY fixed bin tree height_rec - also added tests
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidLeoni committed Dec 11, 2018
1 parent 0cc7632 commit 00b2944
Show file tree
Hide file tree
Showing 3 changed files with 177 additions and 111 deletions.
17 changes: 12 additions & 5 deletions exercises/trees/bin_tree_solution.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,18 @@ def height_rec(self):
"""
#jupman-raise
if self.left() != None:
h_left = self.left().height()
if self.right() != None:
h_right = self.right().height()
if self.left() == None:
h_left = 0
else:
h_left = self.left().height_rec() + 1

return max(h_left, h_right) + 1
if self.right() == None:
h_right = 0
else:
h_right = self.right().height_rec() + 1


return max(h_left, h_right)
#/jupman-raise

def depth_dfs(self, level):
Expand All @@ -122,5 +128,6 @@ def depth_dfs(self, level):
self.left().depth_dfs(level + 1)
if self.right() != None:
self.right().depth_dfs(level + 1)

#/jupman-raise

61 changes: 60 additions & 1 deletion exercises/trees/bin_tree_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,6 @@ def test_insert_left(self):

class InsertRightTest(BinaryTreeTest):


def test_insert_right(self):
ta = BinaryTree('a')
self.assertEqual(ta.left(), None)
Expand All @@ -223,3 +222,63 @@ def test_insert_right(self):
self.assertEqual(tc.right(), None)


class HeightRecTest(BinaryTreeTest):

def test_01(self):
self.assertEqual(bt('a').height_rec(), 0)

def test_02(self):
self.assertEqual(bt('a', bt('b')).height_rec(), 1)

def test_03(self):
self.assertEqual(bt('a', None, bt('b')).height_rec(), 1)

def test_04(self):
self.assertEqual(bt('a', bt('b'), bt('c')).height_rec(), 1)

def test_05(self):
self.assertEqual(bt('a', bt('b', bt('c')), bt('d')).height_rec(), 2)

def test_06(self):
self.assertEqual(bt('a', bt('d'), bt('b', bt('c'))).height_rec(), 2)

def test_07(self):
self.assertEqual(bt('a', bt('b', bt('c', bt('d', bt('e')))), bt('f', bt('g'))).height_rec(), 4)


class DepthDfsTest(BinaryTreeTest):

def test_01(self):
t = bt('a')
t.depth_dfs(0)
self.assertTreeEqual(t, bt(0))

def test_02(self):
t = bt('a', bt('b'))
t.depth_dfs(0)
self.assertTreeEqual(t, bt(0, bt(1)))

def test_03(self):
t = bt('a', None, bt('b'))
t.depth_dfs(0)
self.assertTreeEqual(t, bt(0, None, bt(1)))

def test_04(self):
t = bt('a', bt('b'), bt('c'))
t.depth_dfs(0)
self.assertTreeEqual(t, bt(0, bt(1), bt(1)))

def test_05(self):
t = bt('a', bt('b', bt('c')), bt('d'))
t.depth_dfs(0)
self.assertTreeEqual(t, bt(0, bt(1, bt(2)), bt(1)))

def test_06(self):
t = bt('a', bt('d'), bt('b', bt('c')))
t.depth_dfs(0)
self.assertTreeEqual(t, bt(0, bt(1), bt(1, bt(2))))

def test_07(self):
t = bt('a', bt('b', bt('c', bt('d', bt('e')))), bt('f', bt('g')))
t.depth_dfs(0)
self.assertTreeEqual(t, bt(0, bt(1, bt(2, bt(3, bt(4)))), bt(1, bt(2))))

0 comments on commit 00b2944

Please sign in to comment.