From b4ed90e64944b6489a5dda69cec56acc25d5d0e5 Mon Sep 17 00:00:00 2001 From: Donne Martin Date: Sun, 14 Aug 2016 08:27:35 -0400 Subject: [PATCH] Move tree dfs to a class --- graphs_trees/tree_dfs/dfs_challenge.ipynb | 48 +++++++++-------- graphs_trees/tree_dfs/dfs_solution.ipynb | 64 ++++++++++++----------- graphs_trees/tree_dfs/test_dfs.py | 32 ++++++------ 3 files changed, 74 insertions(+), 70 deletions(-) diff --git a/graphs_trees/tree_dfs/dfs_challenge.ipynb b/graphs_trees/tree_dfs/dfs_challenge.ipynb index 1c12f39..8498e7e 100644 --- a/graphs_trees/tree_dfs/dfs_challenge.ipynb +++ b/graphs_trees/tree_dfs/dfs_challenge.ipynb @@ -99,17 +99,19 @@ }, "outputs": [], "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", " pass\n", "\n", - "def pre_order_traversal(node, visit_func):\n", - " # TODO: Implement me\n", - " pass\n", + " def pre_order_traversal(self, node, visit_func):\n", + " # TODO: Implement me\n", + " pass\n", "\n", - "def post_order_traversal(node, visit_func):\n", - " # TODO: Implement me\n", - " pass" + " def post_order_traversal(self,node, visit_func):\n", + " # TODO: Implement me\n", + " pass" ] }, { @@ -148,39 +150,39 @@ " self.results = Results()\n", "\n", " def test_dfs(self):\n", - " node = Node(5)\n", - " insert(node, 2)\n", - " insert(node, 8)\n", - " insert(node, 1)\n", - " insert(node, 3)\n", + " bst = BstDfs(Node(5))\n", + " bst.insert(2)\n", + " bst.insert(8)\n", + " bst.insert(1)\n", + " bst.insert(3)\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", " self.results.clear_results()\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", " self.results.clear_results()\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", " self.results.clear_results()\n", "\n", - " node = Node(1)\n", - " insert(node, 2)\n", - " insert(node, 3)\n", - " insert(node, 4)\n", - " insert(node, 5)\n", + " bst = BstDfs(Node(1))\n", + " bst.insert(2)\n", + " bst.insert(3)\n", + " bst.insert(4)\n", + " bst.insert(5)\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", " self.results.clear_results()\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", " self.results.clear_results()\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", "\n", " print('Success: test_dfs')\n", diff --git a/graphs_trees/tree_dfs/dfs_solution.ipynb b/graphs_trees/tree_dfs/dfs_solution.ipynb index b31b9f4..1bda80d 100644 --- a/graphs_trees/tree_dfs/dfs_solution.ipynb +++ b/graphs_trees/tree_dfs/dfs_solution.ipynb @@ -132,23 +132,25 @@ }, "outputs": [], "source": [ - "def in_order_traversal(node, visit_func):\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", + "class BstDfs(Bst):\n", "\n", - "def pre_order_traversal(node, visit_func):\n", - " if node is not None:\n", - " visit_func(node)\n", - " pre_order_traversal(node.left, visit_func)\n", - " pre_order_traversal(node.right, visit_func)\n", + " def in_order_traversal(self, node, visit_func):\n", + " if node is not None:\n", + " self.in_order_traversal(node.left, visit_func)\n", + " visit_func(node)\n", + " self.in_order_traversal(node.right, visit_func)\n", "\n", - "def post_order_traversal(node, visit_func):\n", - " if node is not None:\n", - " post_order_traversal(node.left, visit_func)\n", - " post_order_traversal(node.right, visit_func)\n", - " visit_func(node)" + " def pre_order_traversal(self, node, visit_func):\n", + " if node is not None:\n", + " visit_func(node)\n", + " self.pre_order_traversal(node.left, visit_func)\n", + " 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", "\n", " def test_dfs(self):\n", - " node = Node(5)\n", - " insert(node, 2)\n", - " insert(node, 8)\n", - " insert(node, 1)\n", - " insert(node, 3)\n", + " bst = BstDfs(Node(5))\n", + " bst.insert(2)\n", + " bst.insert(8)\n", + " bst.insert(1)\n", + " bst.insert(3)\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", " self.results.clear_results()\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", " self.results.clear_results()\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", " self.results.clear_results()\n", "\n", - " node = Node(1)\n", - " insert(node, 2)\n", - " insert(node, 3)\n", - " insert(node, 4)\n", - " insert(node, 5)\n", + " bst = BstDfs(Node(1))\n", + " bst.insert(2)\n", + " bst.insert(3)\n", + " bst.insert(4)\n", + " bst.insert(5)\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", " self.results.clear_results()\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", " self.results.clear_results()\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", "\n", " print('Success: test_dfs')\n", diff --git a/graphs_trees/tree_dfs/test_dfs.py b/graphs_trees/tree_dfs/test_dfs.py index f2c1f94..25966d4 100644 --- a/graphs_trees/tree_dfs/test_dfs.py +++ b/graphs_trees/tree_dfs/test_dfs.py @@ -7,39 +7,39 @@ class TestDfs(object): self.results = Results() def test_dfs(self): - node = Node(5) - insert(node, 2) - insert(node, 8) - insert(node, 1) - insert(node, 3) + bst = BstDfs(Node(5)) + bst.insert(2) + bst.insert(8) + bst.insert(1) + 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]") 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]") 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]") self.results.clear_results() - node = Node(1) - insert(node, 2) - insert(node, 3) - insert(node, 4) - insert(node, 5) + bst = BstDfs(Node(1)) + bst.insert(2) + bst.insert(3) + bst.insert(4) + 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]") 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]") 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]") print('Success: test_dfs')