Skip to content

Commit ff9ccb7

Browse files
committed
add BinaryTree data structure
1 parent 22bf7c4 commit ff9ccb7

File tree

4 files changed

+41
-25
lines changed

4 files changed

+41
-25
lines changed

Diff for: DataStructure/Tree/BST.py renamed to DataStructure/tree/BST.py

+4-24
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import copy
22

3-
from DataStructure.Tree.tree import Tree
3+
from DataStructure.tree.BinaryTree import BinaryTree
44

55

66
# 二叉查找树
7-
class BST(Tree):
7+
class BST(BinaryTree):
88
root = None
99

1010
def __init__(self, key, data):
@@ -14,35 +14,15 @@ def __init__(self, key, data):
1414
"""
1515
self.key = key
1616
self.data = data
17-
self._l_child = None
18-
self._r_child = None
19-
super().__init__(key, [self.l_child, self._r_child])
17+
super().__init__(key)
2018

2119
def __str__(self):
2220
return str({
2321
'key': str(self.key),
2422
'data': str(self.data)
2523
})
2624

27-
@property
28-
def l_child(self):
29-
return self._l_child
30-
31-
@l_child.setter
32-
def l_child(self, l_child):
33-
if not isinstance(l_child, BST): return
34-
self._l_child = l_child
35-
self.children = [self.l_child, self.r_child]
36-
37-
@property
38-
def r_child(self):
39-
return self._r_child
40-
41-
@r_child.setter
42-
def r_child(self, r_child):
43-
if not isinstance(r_child, BST): return
44-
self._r_child = r_child
45-
self.children = [self.l_child, self.r_child]
25+
4626

4727
# 再书中找到一个值
4828
def get(self, key):

Diff for: DataStructure/tree/BinaryTree.py

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from DataStructure.tree.Tree import Tree
2+
3+
4+
class BinaryTree(Tree):
5+
"""
6+
二叉树:基本二叉树的数据结构
7+
"""
8+
def __init__(self, key):
9+
self.key = key
10+
self._r_child = None
11+
self._l_child = None
12+
super().__init__(key=key, children=[self._l_child, self._r_child])
13+
14+
@property
15+
def l_child(self):
16+
return self._l_child
17+
18+
@l_child.setter
19+
def l_child(self, l_child):
20+
if not isinstance(l_child, BinaryTree): return
21+
self._l_child = l_child
22+
self.children = [self.l_child, self.r_child]
23+
24+
@property
25+
def r_child(self):
26+
return self._r_child
27+
28+
@r_child.setter
29+
def r_child(self, r_child):
30+
if not isinstance(r_child, BinaryTree): return
31+
self._r_child = r_child
32+
self.children = [self.l_child, self.r_child]

Diff for: DataStructure/Tree/tree.py renamed to DataStructure/tree/Tree.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
class Tree(object):
2+
"""
3+
树:基本树的数据结构
4+
"""
25
height = None
36
weight = None
47
root = None
58

69
def __init__(self, key, children):
7-
self.children = children
810
self.key = key
11+
self.children = children
912
if self.root is None:
1013
self.root = self
1114

@@ -56,6 +59,7 @@ def inner_size(node):
5659

5760
return inner_size(self)
5861

62+
5963
if __name__ == '__main__':
6064
root = Tree(1, [Tree(2, [Tree(3, [])]), Tree(4, [])])
6165
print(root.depth())
File renamed without changes.

0 commit comments

Comments
 (0)