It's possible to create a function auto generator this special test case binary tree from array in javascript?
I want to auto generate those test cases in my local env. I'm not asking the LeetCode problem's answer, please read my question first!
situation
generator the
special test case
binary tree for local testing, which isn't asearch binary tree
;
I have an array of nodes of a binary tree and wanted to create a special binary tree like the below image shows.
// nodes array
const root = [3,9,20,null,null,15,7]
I tried a few things and searched google, still can't find a solution;
is there any way to find a solution to this problem, please?
PS: I know that I can
manually
create it.
// created by manually
const specialTestCaseTree = {
val: 3,
left: {
val: 9,
left: null,
right: null,
},
right: {
val: 20,
left: {
val: 15,
left: null,
right: null,
},
right: {
val: 7,
left: null,
right: null,
},
},
};
try
class TreeNode {
constructor(val, left, right) {
this.val = (val === undefined ? 0 : val);
this.left = (left === undefined ? null : left);
this.right = (right === undefined ? null : right);
}
}
class BinaryTreeGenerator {
constructor() {
this.root = null;
this.flag = `left`;
}
insert(key) {
if(this.root === null) {
this.root = new TreeNode(key);
} else {
this.insertNode(this.root, key)
}
}
insertNode(node, key) {
// ignore null
if(key === null) {
return;
}
// tree traversal(root=>left=>right)
if(this.flag === `left`) {
// left
if(node.left === null) {
node.left = new TreeNode(key);
this.flag = `right`;
} else {
this.insertNode(node.left, key)
}
} else {
// right
if(node.right === null) {
node.right = new TreeNode(key);
this.flag = `left`;
} else {
this.insertNode(node.right, key)
}
}
}
}
// testing
const tree = new BinaryTreeGenerator();
const arr = [3,9,20,null,null,15,7];
for (let key of arr) {
tree.insert(key)
}
console.log(`tree =`, tree);
// ❌ not the wanted
references
https://leetcode.com/problems/maximum-depth-of-binary-tree/description/