Good morning! Here's our prompt for today.
Given a binary tree, write a method to return an array containing the largest (by value) node values at each level. In other words, we're looking for the max per level
.

So for instance, given the following binary tree, we'd get [2, 7, 9]
if the method grabbed the correct maxes.
JAVASCRIPT
1/*
2 2
3 / \
4 3 7
5 / \ \
6 5 8 9
7*/
8
9maxValPerLevel(root);
10// [2, 7, 9]
Assuming the standard tree node definition of:
JAVASCRIPT
1function Node(val) {
2 this.val = val;
3 this.left = this.right = null;
4}
Can you fill it out via the following function signature?
JAVASCRIPT
1function maxValPerLevel(root) {
2 // if (!root) { return []; }
3
4 return;
5};
Constraints
- The number of nodes in the given tree <=
100000
- The nodes will always contain integer values between
-1000000000
and1000000000
- Expected time complexity :
O(n)
- Expected space complexity :
O(n)
Try to solve this here or in Interactive Mode.
How do I practice this challenge?
xxxxxxxxxx
85
assertIsFunction(maxValPerLevel, '`maxValPerLevel` should be a function');
var assert = require('assert');
​
function Node(val) {
this.val = val;
this.left = this.right = null;
}
​
function maxValPerLevel(root) {
// Fill in this method
return root;
}
​
// const root = new Node(2);
// root.left = new Node(3);
// root.right = new Node(7);
// root.left.left = new Node(5);
// root.left.right = new Node(8);
// root.right.right = new Node(9);
// console.log(maxValPerLevel(root));
​
function Node(val) {
this.val = val;
this.left = null;
this.right = null;
}
​
// Regular binary trees
var tree1 = new Node(4);
tree1.left = new Node(1);
OUTPUT
:001 > Cmd/Ctrl-Enter to run, Cmd/Ctrl-/ to comment
Tired of reading? Watch this video explanation!
To change the speed of the video or see it in full screen, click the icons to the right of the progress bar.

Here's how we would solve this problem...
How do I use this guide?