@@ -94,8 +94,8 @@ class Solution:
9494 def largestValues (self , root : TreeNode) -> List[int ]:
9595 if root is None :
9696 return []
97- q = collections. deque([root])
98- res = []
97+ q = deque([root])
98+ ans = []
9999 while q:
100100 n = len (q)
101101 t = float (' -inf' )
@@ -106,8 +106,8 @@ class Solution:
106106 q.append(node.left)
107107 if node.right:
108108 q.append(node.right)
109- res .append(t)
110- return res
109+ ans .append(t)
110+ return ans
111111```
112112
113113### ** Java**
@@ -137,7 +137,7 @@ class Solution {
137137 }
138138 Deque<TreeNode > q = new ArrayDeque<> ();
139139 q. offer(root);
140- List<Integer > res = new ArrayList<> ();
140+ List<Integer > ans = new ArrayList<> ();
141141 while (! q. isEmpty()) {
142142 int t = Integer . MIN_VALUE ;
143143 for (int i = 0 , n = q. size(); i < n; ++ i) {
@@ -150,59 +150,96 @@ class Solution {
150150 q. offer(node. right);
151151 }
152152 }
153- res . add(t);
153+ ans . add(t);
154154 }
155- return res ;
155+ return ans ;
156156 }
157157}
158158```
159159
160160### ** C++**
161161
162162``` cpp
163+ /* *
164+ * Definition for a binary tree node.
165+ * struct TreeNode {
166+ * int val;
167+ * TreeNode *left;
168+ * TreeNode *right;
169+ * TreeNode() : val(0), left(nullptr), right(nullptr) {}
170+ * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
171+ * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
172+ * };
173+ */
163174class Solution {
164175public:
165176 vector<int > largestValues(TreeNode* root) {
166- vector<int > res;
167- if (!root)
168- {
169- return res;
170- }
171-
172- deque<TreeNode *> deq;
173- deq.push_back(root);
174- while (!deq.empty())
177+ if (!root) return {};
178+ queue<TreeNode* > q;
179+ vector<int > ans;
180+ q.push(root);
181+ while (!q.empty())
175182 {
176- int size = deq.size();
177- int maxnum = INT_MIN;
178- for (int i = 0; i < size; i++)
183+ int t = INT_MIN;
184+ for (int i = 0, n = q.size(); i < n; ++i)
179185 {
180- TreeNode *ptr = deq.front();
181- deq.pop_front();
182- if (maxnum < ptr->val)
183- {
184- maxnum = ptr->val;
185- }
186-
187- if (ptr->left)
188- {
189- deq.push_back(ptr->left);
190- }
191-
192- if (ptr->right)
193- {
194- deq.push_back(ptr->right);
195- }
186+ auto node = q.front();
187+ q.pop();
188+ t = max(t, node->val);
189+ if (node->left) q.push(node->left);
190+ if (node->right) q.push(node->right);
196191 }
197-
198- res.push_back(maxnum);
192+ ans.push_back(t);
199193 }
200-
201- return res;
194+ return ans;
202195 }
203196};
204197```
205198
199+ ### **Go**
200+
201+ ```go
202+ /**
203+ * Definition for a binary tree node.
204+ * type TreeNode struct {
205+ * Val int
206+ * Left *TreeNode
207+ * Right *TreeNode
208+ * }
209+ */
210+ func largestValues(root *TreeNode) []int {
211+ var ans []int
212+ if root == nil {
213+ return ans
214+ }
215+ var q = []*TreeNode{root}
216+ for len(q) > 0 {
217+ n := len(q)
218+ t := math.MinInt32
219+ for i := 0; i < n; i++ {
220+ node := q[0]
221+ q = q[1:]
222+ t = max(t, node.Val)
223+ if node.Left != nil {
224+ q = append(q, node.Left)
225+ }
226+ if node.Right != nil {
227+ q = append(q, node.Right)
228+ }
229+ }
230+ ans = append(ans, t)
231+ }
232+ return ans
233+ }
234+
235+ func max(a, b int) int {
236+ if a > b {
237+ return a
238+ }
239+ return b
240+ }
241+ ```
242+
206243### ** ...**
207244
208245```
0 commit comments