Move tree dfs to a class

This commit is contained in:
Donne Martin
2016-08-14 08:27:35 -04:00
parent 10a404c7ae
commit b4ed90e649
3 changed files with 74 additions and 70 deletions

View File

@@ -99,17 +99,19 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"def in_order_traversal(node, visit_func):\n", "class BstDfs(Bst):\n",
"\n",
" def in_order_traversal(self, node, visit_func):\n",
" # TODO: Implement me\n", " # TODO: Implement me\n",
" pass\n", " pass\n",
"\n", "\n",
"def pre_order_traversal(node, visit_func):\n", " def pre_order_traversal(self, node, visit_func):\n",
" # TODO: Implement me\n", " # TODO: Implement me\n",
" pass\n", " pass\n",
"\n", "\n",
"def post_order_traversal(node, visit_func):\n", " def post_order_traversal(self,node, visit_func):\n",
" # TODO: Implement me\n", " # TODO: Implement me\n",
" pass" " pass"
] ]
}, },
{ {
@@ -148,39 +150,39 @@
" self.results = Results()\n", " self.results = Results()\n",
"\n", "\n",
" def test_dfs(self):\n", " def test_dfs(self):\n",
" node = Node(5)\n", " bst = BstDfs(Node(5))\n",
" insert(node, 2)\n", " bst.insert(2)\n",
" insert(node, 8)\n", " bst.insert(8)\n",
" insert(node, 1)\n", " bst.insert(1)\n",
" insert(node, 3)\n", " bst.insert(3)\n",
"\n", "\n",
" in_order_traversal(node, self.results.add_result)\n", " bst.in_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[1, 2, 3, 5, 8]\")\n", " assert_equal(str(self.results), \"[1, 2, 3, 5, 8]\")\n",
" self.results.clear_results()\n", " self.results.clear_results()\n",
"\n", "\n",
" pre_order_traversal(node, self.results.add_result)\n", " bst.pre_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[5, 2, 1, 3, 8]\")\n", " assert_equal(str(self.results), \"[5, 2, 1, 3, 8]\")\n",
" self.results.clear_results()\n", " self.results.clear_results()\n",
"\n", "\n",
" post_order_traversal(node, self.results.add_result)\n", " bst.post_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[1, 3, 2, 8, 5]\")\n", " assert_equal(str(self.results), \"[1, 3, 2, 8, 5]\")\n",
" self.results.clear_results()\n", " self.results.clear_results()\n",
"\n", "\n",
" node = Node(1)\n", " bst = BstDfs(Node(1))\n",
" insert(node, 2)\n", " bst.insert(2)\n",
" insert(node, 3)\n", " bst.insert(3)\n",
" insert(node, 4)\n", " bst.insert(4)\n",
" insert(node, 5)\n", " bst.insert(5)\n",
"\n", "\n",
" in_order_traversal(node, self.results.add_result)\n", " bst.in_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[1, 2, 3, 4, 5]\")\n", " assert_equal(str(self.results), \"[1, 2, 3, 4, 5]\")\n",
" self.results.clear_results()\n", " self.results.clear_results()\n",
"\n", "\n",
" pre_order_traversal(node, self.results.add_result)\n", " bst.pre_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[1, 2, 3, 4, 5]\")\n", " assert_equal(str(self.results), \"[1, 2, 3, 4, 5]\")\n",
" self.results.clear_results()\n", " self.results.clear_results()\n",
"\n", "\n",
" post_order_traversal(node, self.results.add_result)\n", " bst.post_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[5, 4, 3, 2, 1]\")\n", " assert_equal(str(self.results), \"[5, 4, 3, 2, 1]\")\n",
"\n", "\n",
" print('Success: test_dfs')\n", " print('Success: test_dfs')\n",

View File

@@ -132,23 +132,25 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"def in_order_traversal(node, visit_func):\n", "class BstDfs(Bst):\n",
" if node is not None:\n",
" in_order_traversal(node.left, visit_func)\n",
" visit_func(node)\n",
" in_order_traversal(node.right, visit_func)\n",
"\n", "\n",
"def pre_order_traversal(node, visit_func):\n", " def in_order_traversal(self, node, visit_func):\n",
" if node is not None:\n", " if node is not None:\n",
" visit_func(node)\n", " self.in_order_traversal(node.left, visit_func)\n",
" pre_order_traversal(node.left, visit_func)\n", " visit_func(node)\n",
" pre_order_traversal(node.right, visit_func)\n", " self.in_order_traversal(node.right, visit_func)\n",
"\n", "\n",
"def post_order_traversal(node, visit_func):\n", " def pre_order_traversal(self, node, visit_func):\n",
" if node is not None:\n", " if node is not None:\n",
" post_order_traversal(node.left, visit_func)\n", " visit_func(node)\n",
" post_order_traversal(node.right, visit_func)\n", " self.pre_order_traversal(node.left, visit_func)\n",
" visit_func(node)" " self.pre_order_traversal(node.right, visit_func)\n",
"\n",
" def post_order_traversal(self, node, visit_func):\n",
" if node is not None:\n",
" self.post_order_traversal(node.left, visit_func)\n",
" self.post_order_traversal(node.right, visit_func)\n",
" visit_func(node)"
] ]
}, },
{ {
@@ -195,39 +197,39 @@
" self.results = Results()\n", " self.results = Results()\n",
"\n", "\n",
" def test_dfs(self):\n", " def test_dfs(self):\n",
" node = Node(5)\n", " bst = BstDfs(Node(5))\n",
" insert(node, 2)\n", " bst.insert(2)\n",
" insert(node, 8)\n", " bst.insert(8)\n",
" insert(node, 1)\n", " bst.insert(1)\n",
" insert(node, 3)\n", " bst.insert(3)\n",
"\n", "\n",
" in_order_traversal(node, self.results.add_result)\n", " bst.in_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[1, 2, 3, 5, 8]\")\n", " assert_equal(str(self.results), \"[1, 2, 3, 5, 8]\")\n",
" self.results.clear_results()\n", " self.results.clear_results()\n",
"\n", "\n",
" pre_order_traversal(node, self.results.add_result)\n", " bst.pre_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[5, 2, 1, 3, 8]\")\n", " assert_equal(str(self.results), \"[5, 2, 1, 3, 8]\")\n",
" self.results.clear_results()\n", " self.results.clear_results()\n",
"\n", "\n",
" post_order_traversal(node, self.results.add_result)\n", " bst.post_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[1, 3, 2, 8, 5]\")\n", " assert_equal(str(self.results), \"[1, 3, 2, 8, 5]\")\n",
" self.results.clear_results()\n", " self.results.clear_results()\n",
"\n", "\n",
" node = Node(1)\n", " bst = BstDfs(Node(1))\n",
" insert(node, 2)\n", " bst.insert(2)\n",
" insert(node, 3)\n", " bst.insert(3)\n",
" insert(node, 4)\n", " bst.insert(4)\n",
" insert(node, 5)\n", " bst.insert(5)\n",
"\n", "\n",
" in_order_traversal(node, self.results.add_result)\n", " bst.in_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[1, 2, 3, 4, 5]\")\n", " assert_equal(str(self.results), \"[1, 2, 3, 4, 5]\")\n",
" self.results.clear_results()\n", " self.results.clear_results()\n",
"\n", "\n",
" pre_order_traversal(node, self.results.add_result)\n", " bst.pre_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[1, 2, 3, 4, 5]\")\n", " assert_equal(str(self.results), \"[1, 2, 3, 4, 5]\")\n",
" self.results.clear_results()\n", " self.results.clear_results()\n",
"\n", "\n",
" post_order_traversal(node, self.results.add_result)\n", " bst.post_order_traversal(bst.root, self.results.add_result)\n",
" assert_equal(str(self.results), \"[5, 4, 3, 2, 1]\")\n", " assert_equal(str(self.results), \"[5, 4, 3, 2, 1]\")\n",
"\n", "\n",
" print('Success: test_dfs')\n", " print('Success: test_dfs')\n",

View File

@@ -7,39 +7,39 @@ class TestDfs(object):
self.results = Results() self.results = Results()
def test_dfs(self): def test_dfs(self):
node = Node(5) bst = BstDfs(Node(5))
insert(node, 2) bst.insert(2)
insert(node, 8) bst.insert(8)
insert(node, 1) bst.insert(1)
insert(node, 3) bst.insert(3)
in_order_traversal(node, self.results.add_result) bst.in_order_traversal(bst.root, self.results.add_result)
assert_equal(str(self.results), "[1, 2, 3, 5, 8]") assert_equal(str(self.results), "[1, 2, 3, 5, 8]")
self.results.clear_results() self.results.clear_results()
pre_order_traversal(node, self.results.add_result) bst.pre_order_traversal(bst.root, self.results.add_result)
assert_equal(str(self.results), "[5, 2, 1, 3, 8]") assert_equal(str(self.results), "[5, 2, 1, 3, 8]")
self.results.clear_results() self.results.clear_results()
post_order_traversal(node, self.results.add_result) bst.post_order_traversal(bst.root, self.results.add_result)
assert_equal(str(self.results), "[1, 3, 2, 8, 5]") assert_equal(str(self.results), "[1, 3, 2, 8, 5]")
self.results.clear_results() self.results.clear_results()
node = Node(1) bst = BstDfs(Node(1))
insert(node, 2) bst.insert(2)
insert(node, 3) bst.insert(3)
insert(node, 4) bst.insert(4)
insert(node, 5) bst.insert(5)
in_order_traversal(node, self.results.add_result) bst.in_order_traversal(bst.root, self.results.add_result)
assert_equal(str(self.results), "[1, 2, 3, 4, 5]") assert_equal(str(self.results), "[1, 2, 3, 4, 5]")
self.results.clear_results() self.results.clear_results()
pre_order_traversal(node, self.results.add_result) bst.pre_order_traversal(bst.root, self.results.add_result)
assert_equal(str(self.results), "[1, 2, 3, 4, 5]") assert_equal(str(self.results), "[1, 2, 3, 4, 5]")
self.results.clear_results() self.results.clear_results()
post_order_traversal(node, self.results.add_result) bst.post_order_traversal(bst.root, self.results.add_result)
assert_equal(str(self.results), "[5, 4, 3, 2, 1]") assert_equal(str(self.results), "[5, 4, 3, 2, 1]")
print('Success: test_dfs') print('Success: test_dfs')