@@ -28,6 +28,7 @@ class Node():
28
28
self .rightNode = None
29
29
30
30
31
+ # # 构建二叉树
31
32
def struct_tree (pre_list , middle_list ):
32
33
33
34
if len (pre_list) == 2 :
@@ -36,10 +37,19 @@ def struct_tree(pre_list, middle_list):
36
37
node = Node(pre_list[0 ])
37
38
# 左叶子节点
38
39
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
40
42
else :
41
43
# 右叶子节点
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
+
43
53
return node
44
54
else :
45
55
# # 递归调用
@@ -55,16 +65,24 @@ def struct_tree(pre_list, middle_list):
55
65
left_middle_list = middle_list[0 : middle_root_index]
56
66
node.leftNode = struct_tree(left_pre_list, left_middle_list)
57
67
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
+
60
71
# 右子树
61
72
if middle_root_index < len (pre_list) - 2 :
62
73
right_pre_list = pre_list[middle_root_index + 1 : ]
63
74
right_middle_list = middle_list[middle_root_index + 1 : ]
64
75
node.rightNode = struct_tree(right_pre_list, right_middle_list)
65
76
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
67
79
80
+ # # 添加父节点
81
+ if node.leftNode != None :
82
+ node.leftNode.parentNode = node
83
+ if node.rightNode != None :
84
+ node.rightNode.parentNode = node
85
+
68
86
return node
69
87
70
88
pre_list = [1 , 2 , 4 , 7 , 3 , 5 , 6 , 8 ]
0 commit comments