mirror of
https://github.com/donnemartin/interactive-coding-challenges
synced 2026-01-14 21:38:02 +00:00
@@ -152,4 +152,4 @@ class BinaryTree (object):
|
||||
return preOrder
|
||||
|
||||
def treeIsEmpty (self):
|
||||
return self.root is None
|
||||
return self.root is None
|
||||
|
||||
@@ -93,9 +93,7 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
},
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"class Node (object):\n",
|
||||
@@ -111,9 +109,7 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
},
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"class BinaryTree (object):\n",
|
||||
@@ -163,15 +159,13 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from nose.tools import assert_equal\n",
|
||||
"import unittest\n",
|
||||
"\n",
|
||||
"class TestBinaryTree(object):\n",
|
||||
"class TestBinaryTree(unittest.TestCase):\n",
|
||||
"\n",
|
||||
"\tdef test_insert_traversals (self):\n",
|
||||
"\t\tmyTree = BinaryTree()\n",
|
||||
@@ -182,22 +176,22 @@
|
||||
"\n",
|
||||
"\t\tprint(\"Test: insert checking with in order traversal\")\n",
|
||||
"\t\texpectVal = [7, 10, 25, 30, 38, 40, 50, 60, 70, 80]\n",
|
||||
"\t\tassert_equal(myTree.printInOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree.printInOrder(), expectVal)\n",
|
||||
"\t\texpectVal = [1, 11, 21, 31, 41, 51, 61, 71, 81, 91]\n",
|
||||
"\t\tassert_equal(myTree2.printInOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree2.printInOrder(), expectVal)\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Test: insert checking with post order traversal\")\n",
|
||||
"\t\texpectVal = [7, 25, 10, 38, 40, 30, 60, 80, 70, 50]\n",
|
||||
"\t\tassert_equal(myTree.printPostOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree.printPostOrder(), expectVal)\n",
|
||||
"\t\texpectVal = [91, 81, 71, 61, 51, 41, 31, 21, 11, 1]\n",
|
||||
"\t\tassert_equal(myTree2.printPostOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree2.printPostOrder(), expectVal)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Test: insert checking with pre order traversal\")\n",
|
||||
"\t\texpectVal = [50, 30, 10, 7, 25, 40, 38, 70, 60, 80]\n",
|
||||
"\t\tassert_equal(myTree.printPreOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree.printPreOrder(), expectVal)\n",
|
||||
"\t\texpectVal = [1, 11, 21, 31, 41, 51, 61, 71, 81, 91]\n",
|
||||
"\t\tassert_equal(myTree2.printPreOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree2.printPreOrder(), expectVal)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Success: test_insert_traversals\")\n",
|
||||
@@ -209,16 +203,16 @@
|
||||
"\t\tmyTree.insert(21)\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Test: max node\")\n",
|
||||
"\t\tassert_equal(myTree.maxNode(), 21)\n",
|
||||
"\t\tself.assertEqual(myTree.maxNode(), 21)\n",
|
||||
"\t\tmyTree.insert(32)\n",
|
||||
"\t\tassert_equal(myTree.maxNode(), 32)\n",
|
||||
"\t\tself.assertEqual(myTree.maxNode(), 32)\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Test: min node\")\n",
|
||||
"\t\tassert_equal(myTree.minNode(), 1)\n",
|
||||
"\t\tself.assertEqual(myTree.minNode(), 1)\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Test: min node inserting negative number\")\n",
|
||||
"\t\tmyTree.insert(-10)\n",
|
||||
"\t\tassert_equal(myTree.minNode(), -10)\n",
|
||||
"\t\tself.assertEqual(myTree.minNode(), -10)\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Success: test_max_min_nodes\")\n",
|
||||
"\n",
|
||||
@@ -228,15 +222,15 @@
|
||||
"\n",
|
||||
"\t\tprint(\"Test: delete\")\n",
|
||||
"\t\tmyTree.delete(5)\n",
|
||||
"\t\tassert_equal(myTree.treeIsEmpty(), True)\n",
|
||||
"\t\tself.assertEqual(myTree.treeIsEmpty(), True)\n",
|
||||
"\t\t\n",
|
||||
"\t\tprint(\"Test: more complex deletions\")\n",
|
||||
"\t\t[myTree.insert(x) for x in range(1, 5)]\n",
|
||||
"\t\tmyTree.delete(2)\n",
|
||||
"\t\tassert_equal(myTree.root.rightChild.data, 3)\n",
|
||||
"\t\tself.assertEqual(myTree.root.rightChild.data, 3)\n",
|
||||
" \n",
|
||||
"\t\tprint(\"Test: delete invalid value\")\n",
|
||||
"\t\tassert_equal(myTree.delete(100), False)\n",
|
||||
"\t\tself.assertEqual(myTree.delete(100), False)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Success: test_delete\")\n",
|
||||
@@ -284,9 +278,9 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.4.3"
|
||||
"version": "3.7.2"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0
|
||||
"nbformat_minor": 1
|
||||
}
|
||||
|
||||
@@ -169,10 +169,8 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
@@ -343,10 +341,8 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"%run binary_search_tree.py"
|
||||
@@ -354,10 +350,8 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
@@ -369,9 +363,9 @@
|
||||
],
|
||||
"source": [
|
||||
"%%writefile test_binary_search_tree.py\n",
|
||||
"from nose.tools import assert_equal\n",
|
||||
"import unittest\n",
|
||||
"\n",
|
||||
"class TestBinaryTree(object):\n",
|
||||
"class TestBinaryTree(unittest.TestCase):\n",
|
||||
"\n",
|
||||
"\tdef test_insert_traversals (self):\n",
|
||||
"\t\tmyTree = BinaryTree()\n",
|
||||
@@ -382,22 +376,22 @@
|
||||
"\n",
|
||||
"\t\tprint(\"Test: insert checking with in order traversal\")\n",
|
||||
"\t\texpectVal = [7, 10, 25, 30, 38, 40, 50, 60, 70, 80]\n",
|
||||
"\t\tassert_equal(myTree.printInOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree.printInOrder(), expectVal)\n",
|
||||
"\t\texpectVal = [1, 11, 21, 31, 41, 51, 61, 71, 81, 91]\n",
|
||||
"\t\tassert_equal(myTree2.printInOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree2.printInOrder(), expectVal)\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Test: insert checking with post order traversal\")\n",
|
||||
"\t\texpectVal = [7, 25, 10, 38, 40, 30, 60, 80, 70, 50]\n",
|
||||
"\t\tassert_equal(myTree.printPostOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree.printPostOrder(), expectVal)\n",
|
||||
"\t\texpectVal = [91, 81, 71, 61, 51, 41, 31, 21, 11, 1]\n",
|
||||
"\t\tassert_equal(myTree2.printPostOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree2.printPostOrder(), expectVal)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Test: insert checking with pre order traversal\")\n",
|
||||
"\t\texpectVal = [50, 30, 10, 7, 25, 40, 38, 70, 60, 80]\n",
|
||||
"\t\tassert_equal(myTree.printPreOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree.printPreOrder(), expectVal)\n",
|
||||
"\t\texpectVal = [1, 11, 21, 31, 41, 51, 61, 71, 81, 91]\n",
|
||||
"\t\tassert_equal(myTree2.printPreOrder(), expectVal)\n",
|
||||
"\t\tself.assertEqual(myTree2.printPreOrder(), expectVal)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Success: test_insert_traversals\")\n",
|
||||
@@ -409,16 +403,16 @@
|
||||
"\t\tmyTree.insert(21)\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Test: max node\")\n",
|
||||
"\t\tassert_equal(myTree.maxNode(), 21)\n",
|
||||
"\t\tself.assertEqual(myTree.maxNode(), 21)\n",
|
||||
"\t\tmyTree.insert(32)\n",
|
||||
"\t\tassert_equal(myTree.maxNode(), 32)\n",
|
||||
"\t\tself.assertEqual(myTree.maxNode(), 32)\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Test: min node\")\n",
|
||||
"\t\tassert_equal(myTree.minNode(), 1)\n",
|
||||
"\t\tself.assertEqual(myTree.minNode(), 1)\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Test: min node inserting negative number\")\n",
|
||||
"\t\tmyTree.insert(-10)\n",
|
||||
"\t\tassert_equal(myTree.minNode(), -10)\n",
|
||||
"\t\tself.assertEqual(myTree.minNode(), -10)\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Success: test_max_min_nodes\")\n",
|
||||
"\n",
|
||||
@@ -428,15 +422,15 @@
|
||||
"\n",
|
||||
"\t\tprint(\"Test: delete\")\n",
|
||||
"\t\tmyTree.delete(5)\n",
|
||||
"\t\tassert_equal(myTree.treeIsEmpty(), True)\n",
|
||||
"\t\tself.assertEqual(myTree.treeIsEmpty(), True)\n",
|
||||
"\t\t\n",
|
||||
"\t\tprint(\"Test: more complex deletions\")\n",
|
||||
"\t\t[myTree.insert(x) for x in range(1, 5)]\n",
|
||||
"\t\tmyTree.delete(2)\n",
|
||||
"\t\tassert_equal(myTree.root.rightChild.data, 3)\n",
|
||||
"\t\tself.assertEqual(myTree.root.rightChild.data, 3)\n",
|
||||
" \n",
|
||||
"\t\tprint(\"Test: delete invalid value\")\n",
|
||||
"\t\tassert_equal(myTree.delete(100), False)\n",
|
||||
"\t\tself.assertEqual(myTree.delete(100), False)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\t\tprint(\"Success: test_delete\")\n",
|
||||
@@ -453,10 +447,8 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
@@ -498,9 +490,9 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.4.3"
|
||||
"version": "3.7.2"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0
|
||||
"nbformat_minor": 1
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from nose.tools import assert_equal
|
||||
import unittest
|
||||
|
||||
class TestBinaryTree(object):
|
||||
class TestBinaryTree(unittest.TestCase):
|
||||
|
||||
def test_insert_traversals (self):
|
||||
myTree = BinaryTree()
|
||||
@@ -11,22 +11,22 @@ class TestBinaryTree(object):
|
||||
|
||||
print("Test: insert checking with in order traversal")
|
||||
expectVal = [7, 10, 25, 30, 38, 40, 50, 60, 70, 80]
|
||||
assert_equal(myTree.printInOrder(), expectVal)
|
||||
self.assertEqual(myTree.printInOrder(), expectVal)
|
||||
expectVal = [1, 11, 21, 31, 41, 51, 61, 71, 81, 91]
|
||||
assert_equal(myTree2.printInOrder(), expectVal)
|
||||
self.assertEqual(myTree2.printInOrder(), expectVal)
|
||||
|
||||
print("Test: insert checking with post order traversal")
|
||||
expectVal = [7, 25, 10, 38, 40, 30, 60, 80, 70, 50]
|
||||
assert_equal(myTree.printPostOrder(), expectVal)
|
||||
self.assertEqual(myTree.printPostOrder(), expectVal)
|
||||
expectVal = [91, 81, 71, 61, 51, 41, 31, 21, 11, 1]
|
||||
assert_equal(myTree2.printPostOrder(), expectVal)
|
||||
self.assertEqual(myTree2.printPostOrder(), expectVal)
|
||||
|
||||
|
||||
print("Test: insert checking with pre order traversal")
|
||||
expectVal = [50, 30, 10, 7, 25, 40, 38, 70, 60, 80]
|
||||
assert_equal(myTree.printPreOrder(), expectVal)
|
||||
self.assertEqual(myTree.printPreOrder(), expectVal)
|
||||
expectVal = [1, 11, 21, 31, 41, 51, 61, 71, 81, 91]
|
||||
assert_equal(myTree2.printPreOrder(), expectVal)
|
||||
self.assertEqual(myTree2.printPreOrder(), expectVal)
|
||||
|
||||
|
||||
print("Success: test_insert_traversals")
|
||||
@@ -38,16 +38,16 @@ class TestBinaryTree(object):
|
||||
myTree.insert(21)
|
||||
|
||||
print("Test: max node")
|
||||
assert_equal(myTree.maxNode(), 21)
|
||||
self.assertEqual(myTree.maxNode(), 21)
|
||||
myTree.insert(32)
|
||||
assert_equal(myTree.maxNode(), 32)
|
||||
self.assertEqual(myTree.maxNode(), 32)
|
||||
|
||||
print("Test: min node")
|
||||
assert_equal(myTree.minNode(), 1)
|
||||
self.assertEqual(myTree.minNode(), 1)
|
||||
|
||||
print("Test: min node inserting negative number")
|
||||
myTree.insert(-10)
|
||||
assert_equal(myTree.minNode(), -10)
|
||||
self.assertEqual(myTree.minNode(), -10)
|
||||
|
||||
print("Success: test_max_min_nodes")
|
||||
|
||||
@@ -57,14 +57,15 @@ class TestBinaryTree(object):
|
||||
|
||||
print("Test: delete")
|
||||
myTree.delete(5)
|
||||
assert_equal(myTree.treeIsEmpty(), True)
|
||||
self.assertEqual(myTree.treeIsEmpty(), True)
|
||||
|
||||
print("Test: more complex deletions")
|
||||
[myTree.insert(x) for x in range(1, 5)]
|
||||
myTree.delete(2)
|
||||
assert_equal(myTree.root.rightChild.data, 3)
|
||||
self.assertEqual(myTree.root.rightChild.data, 3)
|
||||
|
||||
print("Test: delete invalid value")
|
||||
assert_equal(myTree.delete(100), False)
|
||||
self.assertEqual(myTree.delete(100), False)
|
||||
|
||||
|
||||
print("Success: test_delete")
|
||||
@@ -76,4 +77,4 @@ def main():
|
||||
testing.test_delete()
|
||||
|
||||
if __name__=='__main__':
|
||||
main()
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user