From 857497115aea3caac3c4784b440ea5a957cd4f47 Mon Sep 17 00:00:00 2001 From: Donne Martin Date: Sun, 14 Aug 2016 08:22:07 -0400 Subject: [PATCH] Move bst min to a class --- graphs_trees/bst_min/bst_min_challenge.ipynb | 35 ++++++-------- graphs_trees/bst_min/bst_min_solution.ipynb | 51 ++++++++++---------- graphs_trees/bst_min/test_bst_min.py | 13 ++++- 3 files changed, 50 insertions(+), 49 deletions(-) diff --git a/graphs_trees/bst_min/bst_min_challenge.ipynb b/graphs_trees/bst_min/bst_min_challenge.ipynb index cd34d60..7531c6e 100644 --- a/graphs_trees/bst_min/bst_min_challenge.ipynb +++ b/graphs_trees/bst_min/bst_min_challenge.ipynb @@ -90,15 +90,10 @@ }, "outputs": [], "source": [ - "def create_min_bst(array):\n", - " # TODO: Implement me\n", - " # Calls _create_min_bst\n", - " pass \n", + "class MinBst(object):\n", "\n", - "\n", - "def _create_min_bst(array, start, end):\n", - " # TODO: Implement me\n", - " pass" + " def create_min_bst(self, array):\n", + " # TODO: Implement me" ] }, { @@ -115,17 +110,6 @@ "**The following unit test is expected to fail until you solve the challenge.**" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%run ../tree_height/height.py" - ] - }, { "cell_type": "code", "execution_count": null, @@ -138,15 +122,24 @@ "from nose.tools import assert_equal\n", "\n", "\n", + "def height(node):\n", + " if node is None:\n", + " return 0\n", + " return 1 + max(height(node.left),\n", + " height(node.right))\n", + "\n", + "\n", "class TestBstMin(object):\n", "\n", " def test_bst_min(self):\n", + " min_bst = MinBst()\n", " array = [0, 1, 2, 3, 4, 5, 6]\n", - " root = create_min_bst(array)\n", + " root = min_bst.create_min_bst(array)\n", " assert_equal(height(root), 3)\n", "\n", + " min_bst = MinBst()\n", " array = [0, 1, 2, 3, 4, 5, 6, 7]\n", - " root = create_min_bst(array)\n", + " root = min_bst.create_min_bst(array)\n", " assert_equal(height(root), 4)\n", "\n", " print('Success: test_bst_min')\n", diff --git a/graphs_trees/bst_min/bst_min_solution.ipynb b/graphs_trees/bst_min/bst_min_solution.ipynb index c9186dd..6e28364 100644 --- a/graphs_trees/bst_min/bst_min_solution.ipynb +++ b/graphs_trees/bst_min/bst_min_solution.ipynb @@ -102,20 +102,21 @@ "from __future__ import division\n", "\n", "\n", - "def create_min_bst(array):\n", - " if array is None:\n", - " return\n", - " return _create_min_bst(array, 0, len(array)-1)\n", + "class MinBst(object):\n", "\n", + " def create_min_bst(self, array):\n", + " if array is None:\n", + " return\n", + " return self._create_min_bst(array, 0, len(array)-1)\n", "\n", - "def _create_min_bst(array, start, end):\n", - " if end < start:\n", - " return None\n", - " mid = (start + end) // 2\n", - " node = Node(array[mid])\n", - " node.left = _create_min_bst(array, start, mid-1)\n", - " node.right = _create_min_bst(array, mid+1, end)\n", - " return node" + " def _create_min_bst(self, array, start, end):\n", + " if end < start:\n", + " return None\n", + " mid = (start + end) // 2\n", + " node = Node(array[mid])\n", + " node.left = self._create_min_bst(array, start, mid-1)\n", + " node.right = self._create_min_bst(array, mid+1, end)\n", + " return node" ] }, { @@ -128,17 +129,6 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%run ../tree_height/height.py" - ] - }, - { - "cell_type": "code", - "execution_count": 4, "metadata": { "collapsed": false }, @@ -156,15 +146,24 @@ "from nose.tools import assert_equal\n", "\n", "\n", + "def height(node):\n", + " if node is None:\n", + " return 0\n", + " return 1 + max(height(node.left),\n", + " height(node.right))\n", + "\n", + "\n", "class TestBstMin(object):\n", "\n", " def test_bst_min(self):\n", + " min_bst = MinBst()\n", " array = [0, 1, 2, 3, 4, 5, 6]\n", - " root = create_min_bst(array)\n", + " root = min_bst.create_min_bst(array)\n", " assert_equal(height(root), 3)\n", "\n", + " min_bst = MinBst()\n", " array = [0, 1, 2, 3, 4, 5, 6, 7]\n", - " root = create_min_bst(array)\n", + " root = min_bst.create_min_bst(array)\n", " assert_equal(height(root), 4)\n", "\n", " print('Success: test_bst_min')\n", @@ -181,7 +180,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { "collapsed": false }, diff --git a/graphs_trees/bst_min/test_bst_min.py b/graphs_trees/bst_min/test_bst_min.py index eb1e510..963ae70 100644 --- a/graphs_trees/bst_min/test_bst_min.py +++ b/graphs_trees/bst_min/test_bst_min.py @@ -1,15 +1,24 @@ from nose.tools import assert_equal +def height(node): + if node is None: + return 0 + return 1 + max(height(node.left), + height(node.right)) + + class TestBstMin(object): def test_bst_min(self): + min_bst = MinBst() array = [0, 1, 2, 3, 4, 5, 6] - root = create_min_bst(array) + root = min_bst.create_min_bst(array) assert_equal(height(root), 3) + min_bst = MinBst() array = [0, 1, 2, 3, 4, 5, 6, 7] - root = create_min_bst(array) + root = min_bst.create_min_bst(array) assert_equal(height(root), 4) print('Success: test_bst_min')