Skip to content

Commit ea76240

Browse files
authored
优化二叉树的创建
1 parent 07c559e commit ea76240

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

Algorithm/Interview-7.md

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class Node():
2828
self.rightNode = None
2929

3030

31+
## 构建二叉树
3132
def struct_tree(pre_list, middle_list):
3233

3334
if len(pre_list) == 2:
@@ -36,10 +37,19 @@ def struct_tree(pre_list, middle_list):
3637
node = Node(pre_list[0])
3738
#左叶子节点
3839
if pre_list[0] == middle_list[1]:
39-
node.leftNode = pre_list[1]
40+
left_node = Node(pre_list[1])
41+
node.leftNode = left_node
4042
else:
4143
# 右叶子节点
42-
node.rightNode = pre_list[1]
44+
right_node = Node(pre_list[1])
45+
node.rightNode = right_node
46+
47+
## 添加父节点
48+
if node.leftNode != None:
49+
node.leftNode.parentNode = node
50+
if node.rightNode != None:
51+
node.rightNode.parentNode = node
52+
4353
return node
4454
else:
4555
## 递归调用
@@ -55,16 +65,24 @@ def struct_tree(pre_list, middle_list):
5565
left_middle_list = middle_list[0 : middle_root_index]
5666
node.leftNode = struct_tree(left_pre_list, left_middle_list)
5767
elif middle_root_index == 1:
58-
node.leftNode = middle_list[0]
59-
å
68+
left_node = Node(middle_list[0])
69+
node.leftNode = left_node
70+
6071
# 右子树
6172
if middle_root_index < len(pre_list) - 2:
6273
right_pre_list = pre_list[middle_root_index + 1 : ]
6374
right_middle_list = middle_list[middle_root_index + 1 : ]
6475
node.rightNode = struct_tree(right_pre_list, right_middle_list)
6576
elif middle_root_index == len(pre_list) - 2:
66-
node.rightNode = middle_list[len(pre_list) - 1]
77+
right_node = Node(middle_list[len(pre_list) - 1])
78+
node.rightNode = right_node
6779

80+
## 添加父节点
81+
if node.leftNode != None:
82+
node.leftNode.parentNode = node
83+
if node.rightNode != None:
84+
node.rightNode.parentNode = node
85+
6886
return node
6987

7088
pre_list = [1, 2, 4, 7, 3, 5, 6, 8]

0 commit comments

Comments
 (0)