75
75
76
76
<!-- 这里可写通用的实现逻辑 -->
77
77
78
+ “BFS 层次遍历”实现。
79
+
78
80
<!-- tabs:start -->
79
81
80
82
### ** Python3**
81
83
82
84
<!-- 这里可写当前语言的特殊实现逻辑 -->
83
85
84
86
``` python
85
-
87
+ # Definition for a binary tree node.
88
+ # class TreeNode:
89
+ # def __init__(self, val=0, left=None, right=None):
90
+ # self.val = val
91
+ # self.left = left
92
+ # self.right = right
93
+ class Solution :
94
+ def largestValues (self , root : TreeNode) -> List[int ]:
95
+ if root is None :
96
+ return []
97
+ q = collections.deque([root])
98
+ res = []
99
+ while q:
100
+ n = len (q)
101
+ t = float (' -inf' )
102
+ for _ in range (n):
103
+ node = q.popleft()
104
+ t = max (t, node.val)
105
+ if node.left:
106
+ q.append(node.left)
107
+ if node.right:
108
+ q.append(node.right)
109
+ res.append(t)
110
+ return res
86
111
```
87
112
88
113
### ** Java**
89
114
90
115
<!-- 这里可写当前语言的特殊实现逻辑 -->
91
116
92
117
``` java
93
-
118
+ /**
119
+ * Definition for a binary tree node.
120
+ * public class TreeNode {
121
+ * int val;
122
+ * TreeNode left;
123
+ * TreeNode right;
124
+ * TreeNode() {}
125
+ * TreeNode(int val) { this.val = val; }
126
+ * TreeNode(int val, TreeNode left, TreeNode right) {
127
+ * this.val = val;
128
+ * this.left = left;
129
+ * this.right = right;
130
+ * }
131
+ * }
132
+ */
133
+ class Solution {
134
+ public List<Integer > largestValues (TreeNode root ) {
135
+ if (root == null ) {
136
+ return Collections . emptyList();
137
+ }
138
+ Deque<TreeNode > q = new ArrayDeque<> ();
139
+ q. offer(root);
140
+ List<Integer > res = new ArrayList<> ();
141
+ while (! q. isEmpty()) {
142
+ int t = Integer . MIN_VALUE ;
143
+ for (int i = 0 , n = q. size(); i < n; ++ i) {
144
+ TreeNode node = q. poll();
145
+ t = Math . max(t, node. val);
146
+ if (node. left != null ) {
147
+ q. offer(node. left);
148
+ }
149
+ if (node. right != null ) {
150
+ q. offer(node. right);
151
+ }
152
+ }
153
+ res. add(t);
154
+ }
155
+ return res;
156
+ }
157
+ }
94
158
```
95
159
96
160
### ** C++**
@@ -100,32 +164,32 @@ class Solution {
100
164
public:
101
165
vector<int > largestValues(TreeNode* root) {
102
166
vector<int > res;
103
- if( !root )
167
+ if ( !root)
104
168
{
105
169
return res;
106
170
}
107
171
108
- deque<TreeNode* > deq;
172
+ deque<TreeNode * > deq;
109
173
deq.push_back(root);
110
- while( !deq.empty())
174
+ while ( !deq.empty())
111
175
{
112
176
int size = deq.size();
113
177
int maxnum = INT_MIN;
114
178
for (int i = 0; i < size; i++)
115
179
{
116
- TreeNode* ptr = deq.front();
180
+ TreeNode * ptr = deq.front();
117
181
deq.pop_front();
118
- if(maxnum < ptr->val)
182
+ if (maxnum < ptr->val)
119
183
{
120
184
maxnum = ptr->val;
121
185
}
122
186
123
- if (ptr->left)
187
+ if (ptr->left)
124
188
{
125
189
deq.push_back(ptr->left);
126
190
}
127
191
128
- if(ptr->right)
192
+ if (ptr->right)
129
193
{
130
194
deq.push_back(ptr->right);
131
195
}
0 commit comments