Factorization tree
by Artem
TypeScript
'use strict';
// Factorization of 48
class Node {
constructor(public value: number, public left: Node, public right: Node) {}
}
// Example of a tree structure
/*
const tree = new Node(
12,
new Node(3, null, null),
new Node(
4,
new Node(2, null, null),
new Node(2, null, null)
)
);
console.log(tree);
*/
function getGreatestFactor(value: number): number {
let factors = [];
for (let i = 2; i <= value / 2; i++) {
if (value % i === 0) {
factors.push(value / i);
}
}
return factors[0] || value;
}
function factor(value: number): [number, number] {
const right = getGreatestFactor(value);
const left = value / right;
return [left, right];
}
function buildFactorTree(value: number): Node {
const [l, r] = factor(value);
if (l === 1 && r === value) {
return new Node(r, null, null);
}
const rootNode = new Node(value, buildFactorTree(l), buildFactorTree(r));
return rootNode;
}
console.log(buildFactorTree(48));