- Notifications
You must be signed in to change notification settings - Fork 625
/
Copy path117.py
104 lines (88 loc) · 2.12 KB
/
117.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
'''
Given a binary tree
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.
Initially, all next pointers are set to NULL.
Example:
Given the following binary tree,
1
/ \
2 3
/ \ \
4 5 7
After calling your function, the tree should look like:
1 -> NULL
/ \
2 -> 3 -> NULL
/ \ \
4-> 5 -> 7 -> NULL
'''
# Definition for binary tree with next pointer.
# class TreeLinkNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# self.next = None
classSolution:
# @param root, a tree link node
# @return nothing
defconnect(self, root):
ifroot==None:
return
queue= [root]
queue.append(None)
whilequeue:
front=queue.pop(0)
iffrontisnotNone:
front.next=queue[0]
iffront.left:
queue.append(front.left)
iffront.right:
queue.append(front.right)
elifqueue:
queue.append(None)
# Definition for binary tree with next pointer.
# class TreeLinkNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# self.next = None
classSolution:
# @param root, a tree link node
# @return nothing
defconnect(self, root):
ifnotroot:
returnNone
root.next=None
whileroot:
temp=root
whiletemp:
iftemp.left:
iftemp.right:
temp.left.next=temp.right
else:
temp.left.next=self.getNext(temp)
iftemp.right:
temp.right.next=self.getNext(temp)
temp=temp.next
ifroot.left:
root=root.left
elifroot.right:
root=root.right
else:
root=self.getNext(root)
defgetNext(self, node):
node=node.next
whilenode:
ifnode.left:
returnnode.left
ifnode.right:
returnnode.right
node=node.next
returnNone