Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

I need help for this code to pass these test specs: class TreeNode { constructor(value, left, right, level) { this.value = value; this.left = left;

I need help for this code to pass these test specs:

class TreeNode {

constructor(value, left, right, level) {

this.value = value;

this.left = left;

this.right = right;

this.level = level

}

}

// Given a tree, find the first (left-most) node at each

// level of the tree and return it in an array, with the root at the

// 0th index, and the left-most node in the deepest level of the tree

// in the last index.

// 5

// / \

// 4 7

// / \ \

// 1 3 2

// / / \

// 8 4 9

// / \

// 2 4

// Expected Output -> [ 5, 4, 1, 8, 2 ]

function findFirstNodes(root) {

const stack = [root];

root.level = 0;

const firsts = [];

while (stack.length > 0) {

const curr = stack.pop();

if (!firsts[curr.level]) {

firsts.push(curr.value);

}

if (curr.left) {

stack.shift(curr.left);

}

}

return firsts;

}

// Uncomment the code below for local testing.

// // Build a tree for testing

// const simpleTree = new TreeNode(4, null, null);

// simpleTree.right = new TreeNode(8, null, null);

// simpleTree.left = new TreeNode(3, null, null);

// simpleTree.right.right = new TreeNode(2, null, null);

// // Test the function with the debug tree

// console.log(findFirstNodes(simpleTree)); // -> [ 4, 3, 2 ]

TEST CASE:

const { expect } = require('chai');

const assert = require('assert');

try {

({ TreeNode, findFirstNodes } = require('../tree_project'));

} catch (e) { console.log("Failed to load dependencies") }

describe('Left Only', () => {

const leftOnly = new TreeNode(5, null, null);

leftOnly.left = new TreeNode(9, null, null);

leftOnly.left.left = new TreeNode(7, null, null);

leftOnly.left.left.left = new TreeNode(8, null, null);

context('Leftmost at level', () => {

it(`Produces an array with the leftmost element in each level`, () => {

const leftMostNodes = findFirstNodes(leftOnly)

expect(leftMostNodes).to.deep.equal([ 5, 9, 7, 8 ])

});

});

});

describe('Triangle tree', () => {

const triangleTree = new TreeNode(8, null, null);

triangleTree.left = new TreeNode(2, null, null);

triangleTree.right = new TreeNode(4, null, null);

context('Leftmost at level', () => {

it(`Produces an array with the leftmost element in each level`, () => {

const leftMostNodes = findFirstNodes(triangleTree)

expect(leftMostNodes).to.deep.equal([ 8, 2 ])

});

});

});

describe('Simple Tree', () => {

const simpleTree = new TreeNode(4, null, null);

simpleTree.right = new TreeNode(3, null, null);

simpleTree.left = new TreeNode(1, null, null);

simpleTree.right.right = new TreeNode(2, null, null);

context('Leftmost at level', () => {

it(`Produces an array with the leftmost element in each level`, () => {

const leftMostNodes = findFirstNodes(simpleTree)

expect(leftMostNodes).to.deep.equal([ 4, 1, 2 ])

});

});

});

describe('Complex Tree', () => {

const complexTree = new TreeNode(5, null, null);

complexTree.left = new TreeNode(4, null, null);

complexTree.left.left = new TreeNode(1, null, null);

complexTree.left.right = new TreeNode(3, null, null);

complexTree.left.right.left = new TreeNode(8, null, null);

complexTree.right = new TreeNode(7, null, null);

complexTree.right.right = new TreeNode(2, null, null);

complexTree.right.right.left = new TreeNode(4, null, null);

complexTree.right.right.right = new TreeNode(9, null, null);

complexTree.right.right.right.left = new TreeNode(2, null, null);

complexTree.right.right.right.right = new TreeNode(4, null, null);

context('Leftmost at level', () => {

it(`Produces an array with the leftmost element in each level`, () => {

const leftMostNodes = findFirstNodes(complexTree)

expect(leftMostNodes).to.deep.equal([ 5, 4, 1, 8, 2 ])

});

});

});

describe('Letter Tree', () => {

const letterTree = new TreeNode('W', null, null);

letterTree.right = new TreeNode('X', null, null);

letterTree.left = new TreeNode('Z', null, null);

letterTree.left.left = new TreeNode('R', null, null);

letterTree.right.left = new TreeNode('P', null, null);

letterTree.right.left.right = new TreeNode('Q', null, null);

context('Leftmost at level', () => {

it(`Produces an array with the leftmost element in each level`, () => {

const leftMostNodes = findFirstNodes(letterTree)

expect(leftMostNodes).to.deep.equal([ 'W', 'Z', 'R', 'Q' ])

});

});

});

describe('Negative Numbers', () => {

const negativeTree = new TreeNode(-7, null, null);

negativeTree.left = new TreeNode(-4, null, null);

negativeTree.left.left = new TreeNode(5, null, null);

negativeTree.left.right = new TreeNode(-9, null, null);

negativeTree.left.right.left = new TreeNode(4, null, null);

negativeTree.right = new TreeNode(6, null, null);

negativeTree.right.right = new TreeNode(-1, null, null);

negativeTree.right.right.left = new TreeNode(-6, null, null);

negativeTree.right.right.right = new TreeNode(8, null, null);

negativeTree.right.right.right.left = new TreeNode(4, null, null);

negativeTree.right.right.right.right = new TreeNode(-3, null, null);

context('Leftmost at level', () => {

it(`Produces an array with the leftmost element in each level`, () => {

const leftMostNodes = findFirstNodes(negativeTree)

expect(leftMostNodes).to.deep.equal([ -7, -4, 5, 4, 4 ])

});

});

});

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions

Question

What is Accounting?

Answered: 1 week ago

Question

Define organisation chart

Answered: 1 week ago

Question

What are the advantages of planning ?

Answered: 1 week ago

Question

Explain the factors that determine the degree of decentralisation

Answered: 1 week ago

Question

8. Do the organizations fringe benefits reflect diversity?

Answered: 1 week ago

Question

7. Do the organizations social activities reflect diversity?

Answered: 1 week ago