Skip to content

Commit f6d3c80

Browse files
committed
update
1 parent 9311bb2 commit f6d3c80

File tree

3 files changed

+213
-0
lines changed

3 files changed

+213
-0
lines changed
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
class BinarySearchTree:
2+
3+
def __init__(self, data):
4+
self.data = data
5+
self.left = None
6+
self.right = None
7+
8+
def search(self, value):
9+
if self.data == value:
10+
return True
11+
if self.data > value:
12+
if self.left:
13+
return self.left.search(value)
14+
else:
15+
return False
16+
17+
else:
18+
if self.right:
19+
return self.right.search(value)
20+
else:
21+
return False
22+
23+
24+
def add(self, value):
25+
26+
if self.data == value:
27+
return
28+
if self.data > value:
29+
if self.left == None:
30+
self.left = BinarySearchTree(value)
31+
32+
else:
33+
self.left.add(value)
34+
else:
35+
if self.right == None:
36+
self.right = BinarySearchTree(value)
37+
else:
38+
self.right.add(value)
39+
40+
def inorder_traversal(self):
41+
# Left-Node-Right -> LNR
42+
elements = []
43+
if self.left:
44+
elements += self.left.inorder_traversal()
45+
elements.append(self.data)
46+
if self.right:
47+
elements += self.right.inorder_traversal()
48+
return elements
49+
50+
def preorder_traversal(self):
51+
# Node-Left-Right -> NLR
52+
53+
elements = []
54+
elements.append(self.data)
55+
if self.left:
56+
elements += self.left.preorder_traversal()
57+
58+
if self.right:
59+
elements += self.right.preorder_traversal()
60+
return elements
61+
62+
def postorder_traversal(self):
63+
# Left-Right-Node -> LRN
64+
65+
elements = []
66+
67+
if self.left:
68+
elements += self.left.postorder_traversal()
69+
if self.right:
70+
elements += self.right.postorder_traversal()
71+
72+
elements.append(self.data)
73+
74+
return elements
75+
76+
def reverse(self):
77+
self.left, self.right = self.right, self.left
78+
if self.left:
79+
self.left.reverse()
80+
if self.right:
81+
self.right.reverse()
82+
83+
84+
85+
if __name__ == "__main__":
86+
elements = [15, 12, 27, 7, 14, 20, 88, 23]
87+
root = BinarySearchTree(15)
88+
for element in elements:
89+
root.add(element)
90+
91+
# print(root.data)
92+
# print(root.left.data)
93+
# print(root.left.left.data)
94+
# print(root.left.right.data)
95+
# print(root.right.left.right.data)
96+
print(root.inorder_traversal())
97+
print(root.preorder_traversal())
98+
print(root.postorder_traversal())
99+
100+
print(root.search(88))
101+
print(root.search(212))
102+
root.reverse()
103+
print(root.inorder_traversal())
104+

data-structure/trees/binary_tree.py

Whitespace-only changes.
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"# Recursion in Python"
8+
]
9+
},
10+
{
11+
"cell_type": "code",
12+
"execution_count": 1,
13+
"metadata": {},
14+
"outputs": [],
15+
"source": [
16+
"def function():\n",
17+
" x = 10\n",
18+
" function()"
19+
]
20+
},
21+
{
22+
"cell_type": "code",
23+
"execution_count": 2,
24+
"metadata": {},
25+
"outputs": [
26+
{
27+
"ename": "RecursionError",
28+
"evalue": "maximum recursion depth exceeded",
29+
"output_type": "error",
30+
"traceback": [
31+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
32+
"\u001b[0;31mRecursionError\u001b[0m Traceback (most recent call last)",
33+
"Cell \u001b[0;32mIn[2], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mfunction\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
34+
"Cell \u001b[0;32mIn[1], line 3\u001b[0m, in \u001b[0;36mfunction\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfunction\u001b[39m():\n\u001b[1;32m 2\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m10\u001b[39m\n\u001b[0;32m----> 3\u001b[0m \u001b[43mfunction\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
35+
"Cell \u001b[0;32mIn[1], line 3\u001b[0m, in \u001b[0;36mfunction\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfunction\u001b[39m():\n\u001b[1;32m 2\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m10\u001b[39m\n\u001b[0;32m----> 3\u001b[0m \u001b[43mfunction\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
36+
" \u001b[0;31m[... skipping similar frames: function at line 3 (2970 times)]\u001b[0m\n",
37+
"Cell \u001b[0;32mIn[1], line 3\u001b[0m, in \u001b[0;36mfunction\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfunction\u001b[39m():\n\u001b[1;32m 2\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m10\u001b[39m\n\u001b[0;32m----> 3\u001b[0m \u001b[43mfunction\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
38+
"\u001b[0;31mRecursionError\u001b[0m: maximum recursion depth exceeded"
39+
]
40+
}
41+
],
42+
"source": [
43+
"function()"
44+
]
45+
},
46+
{
47+
"cell_type": "code",
48+
"execution_count": 3,
49+
"metadata": {},
50+
"outputs": [],
51+
"source": [
52+
"def countdown(n):\n",
53+
" print(n)\n",
54+
" if n > 0:\n",
55+
" countdown(n - 1)"
56+
]
57+
},
58+
{
59+
"cell_type": "code",
60+
"execution_count": 4,
61+
"metadata": {},
62+
"outputs": [
63+
{
64+
"name": "stdout",
65+
"output_type": "stream",
66+
"text": [
67+
"5\n",
68+
"4\n",
69+
"3\n",
70+
"2\n",
71+
"1\n",
72+
"0\n"
73+
]
74+
}
75+
],
76+
"source": [
77+
"countdown(5)"
78+
]
79+
},
80+
{
81+
"cell_type": "code",
82+
"execution_count": null,
83+
"metadata": {},
84+
"outputs": [],
85+
"source": []
86+
}
87+
],
88+
"metadata": {
89+
"kernelspec": {
90+
"display_name": "ml_env",
91+
"language": "python",
92+
"name": "python3"
93+
},
94+
"language_info": {
95+
"codemirror_mode": {
96+
"name": "ipython",
97+
"version": 3
98+
},
99+
"file_extension": ".py",
100+
"mimetype": "text/x-python",
101+
"name": "python",
102+
"nbconvert_exporter": "python",
103+
"pygments_lexer": "ipython3",
104+
"version": "3.9.18"
105+
}
106+
},
107+
"nbformat": 4,
108+
"nbformat_minor": 2
109+
}

0 commit comments

Comments
 (0)