<script>
class Node
{
constructor(data) {
this
.data = data;
this
.left =
null
;
this
.right =
null
;
}
}
function
newNode(data)
{
let temp =
new
Node(data);
return
temp;
}
function
levelOrderAP(root)
{
let finalAns = [];
if
(root ==
null
) {
return
finalAns;
}
Utilfun(root, 0, finalAns);
let maxi = Number.MIN_VALUE;
for
(let ele = 0; ele < finalAns.length; ele++) {
maxi = Math.max(maxi, finalAns[ele]);
}
for
(let i = 0; i < finalAns.length; i++) {
let val = maxi - finalAns[i];
finalAns[i] = val;
}
return
finalAns;
}
function
Utilfun(root, level, ans)
{
if
(root ==
null
) {
return
;
}
if
(ans.length == level) {
ans.push(root.data);
}
else
{
let val = ans[level] + root.data;
ans[level] = val;
}
Utilfun(root.left, level + 1, ans);
Utilfun(root.right, level + 1, ans);
}
let root = newNode(8);
root.left = newNode(3);
root.right = newNode(10);
root.left.left = newNode(1);
root.left.right = newNode(6);
root.right.right = newNode(14);
root.left.right.left = newNode(4);
root.left.right.right = newNode(7);
root.right.right.left = newNode(13);
let ans = levelOrderAP(root);
document.write(
"["
);
for
(let i = 0; i < ans.length - 1; i++)
{
document.write(ans[i] +
", "
);
}
document.write(ans[ans.length - 1] +
"]"
);
</script>