Skip to content

Commit 4930f1b

Browse files
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
1 parent b002fc9 commit 4930f1b

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

data_structures/binary_tree/avl_tree.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
class MyQueue:
77
__slots__ = ("data", "head", "tail")
8-
8+
99
def __init__(self) -> None:
1010
self.data: list[Any] = []
1111
self.head = self.tail = 0
@@ -24,24 +24,24 @@ def pop(self) -> Any:
2424

2525
class MyNode:
2626
__slots__ = ("data", "height", "left", "right") # 按字母顺序排序
27-
27+
2828
def __init__(self, data: Any) -> None:
2929
self.data = data
3030
self.height = 1
3131
self.left: MyNode | None = None
3232
self.right: MyNode | None = None
3333

34-
def get_height(node: MyNode | None) -> int:
34+
def get_height(node: MyNode | None) -> int:
3535
return node.height if node else 0
3636

37-
def my_max(a: int, b: int) -> int:
37+
def my_max(a: int, b: int) -> int:
3838
return a if a > b else b
3939

4040
def right_rotation(node: MyNode) -> MyNode:
4141
left_child = node.left
4242
if left_child is None:
4343
return node
44-
44+
4545
node.left = left_child.right
4646
left_child.right = node
4747
node.height = my_max(get_height(node.right), get_height(node.left)) + 1
@@ -52,7 +52,7 @@ def left_rotation(node: MyNode) -> MyNode:
5252
right_child = node.right
5353
if right_child is None:
5454
return node
55-
55+
5656
node.right = right_child.left
5757
right_child.left = node
5858
node.height = my_max(get_height(node.right), get_height(node.left)) + 1
@@ -72,7 +72,7 @@ def rl_rotation(node: MyNode) -> MyNode:
7272
def insert_node(node: MyNode | None, data: Any) -> MyNode | None:
7373
if node is None:
7474
return MyNode(data)
75-
75+
7676
if data < node.data:
7777
node.left = insert_node(node.left, data)
7878
if get_height(node.left) - get_height(node.right) == 2:
@@ -87,7 +87,7 @@ def insert_node(node: MyNode | None, data: Any) -> MyNode | None:
8787
node = rl_rotation(node)
8888
else:
8989
node = left_rotation(node)
90-
90+
9191
node.height = my_max(get_height(node.right), get_height(node.left)) + 1
9292
return node
9393

@@ -109,14 +109,14 @@ def del_node(root: MyNode | None, data: Any) -> MyNode | None:
109109
root.left = del_node(root.left, data)
110110
else:
111111
root.right = del_node(root.right, data)
112-
112+
113113
if root.left is None and root.right is None:
114114
root.height = 1
115115
return root
116-
116+
117117
left_height = get_height(root.left)
118118
right_height = get_height(root.right)
119-
119+
120120
if right_height - left_height == 2:
121121
right_right = get_height(root.right.right) if root.right else 0
122122
right_left = get_height(root.right.left) if root.right else 0
@@ -127,37 +127,37 @@ def del_node(root: MyNode | None, data: Any) -> MyNode | None:
127127
left_right = get_height(root.left.right) if root.left else 0
128128
# 使用三元表达式
129129
root = right_rotation(root) if left_left > left_right else lr_rotation(root)
130-
130+
131131
root.height = my_max(get_height(root.right), get_height(root.left)) + 1
132132
return root
133133

134134
class AVLTree:
135135
__slots__ = ("root",)
136-
137-
def __init__(self) -> None:
136+
137+
def __init__(self) -> None:
138138
self.root: MyNode | None = None
139-
140-
def get_height(self) -> int:
139+
140+
def get_height(self) -> int:
141141
return get_height(self.root)
142-
142+
143143
def insert(self, data: Any) -> None:
144144
self.root = insert_node(self.root, data)
145-
145+
146146
def delete(self, data: Any) -> None:
147147
self.root = del_node(self.root, data)
148-
148+
149149
def __str__(self) -> str:
150150
if self.root is None:
151151
return ""
152-
152+
153153
levels = []
154154
# 明确指定类型为 MyNode | None
155155
queue: list[MyNode | None] = [self.root]
156-
156+
157157
while queue:
158158
current = []
159159
next_level: list[MyNode | None] = []
160-
160+
161161
for node in queue:
162162
if node:
163163
current.append(str(node.data))
@@ -166,25 +166,25 @@ def __str__(self) -> str:
166166
else:
167167
current.append("*")
168168
next_level.extend([None, None])
169-
169+
170170
if any(node is not None for node in next_level):
171171
levels.append(" ".join(current))
172172
queue = next_level
173173
else:
174174
if current: # 添加最后一行
175175
levels.append(" ".join(current))
176176
break
177-
177+
178178
return "\n".join(levels) + "\n" + "*"*36
179179

180180
def test_avl_tree() -> None:
181181
t = AVLTree()
182182
lst = list(range(10))
183183
random.shuffle(lst)
184-
184+
185185
for i in lst:
186186
t.insert(i)
187-
187+
188188
random.shuffle(lst)
189189
for i in lst:
190190
t.delete(i)

0 commit comments

Comments
 (0)