sanket3280/code-execution
0
1module.exports = function treeWrapper({ sourceCode, language }) {2 let prefix = '';3 switch (language) {4 case 'JAVASCRIPT_NODE':5 prefix = `6// Tree helpers (JS)7function TreeNode(val,left,right){this.val=(val===undefined?0:val);this.left=(left===undefined?null:left);this.right=(right===undefined?null:right)}8function buildBinaryTree(arr){if(!arr||arr.length===0)return null;const nodes=arr.map(v=>v===null||v===undefined?null:new TreeNode(v));for(let i=0,j=1;j<nodes.length;i++){if(nodes[i]){if(j<nodes.length)nodes[i].left=nodes[j++];if(j<nodes.length)nodes[i].right=nodes[j++]}}return nodes[0]}9function binaryTreeToArray(root){const res=[];const q=[root];while(q.length){const n=q.shift();if(n){res.push(n.val);q.push(n.left);q.push(n.right)}else{res.push(null)}}while(res.length&&res[res.length-1]==null)res.pop();return res}10`;11 break;12 case 'PYTHON3':13 case 'PYTHON3_8':14 prefix = `15# Tree helpers (Python)16class TreeNode:17 def __init__(self,val=0,left=None,right=None):18 self.val=val; self.left=left; self.right=right19def build_binary_tree(arr):20 if not arr: return None21 nodes=[None if v is None else TreeNode(v) for v in arr]22 j=123 for i in range(len(nodes)):24 if nodes[i] is not None:25 if j < len(nodes): nodes[i].left = nodes[j]; j+=126 if j < len(nodes): nodes[i].right = nodes[j]; j+=127 return nodes[0]28def binary_tree_to_array(root):29 res=[]; q=[root]30 while q:31 n=q.pop(0)32 if n:33 res.append(n.val); q.append(n.left); q.append(n.right)34 else:35 res.append(None)36 while res and res[-1] is None: res.pop()37 return res38`;39 break;40 case 'JAVA':41 prefix = `42// Tree helpers (Java)43class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(){} TreeNode(int v){val=v;} TreeNode(int v,TreeNode l,TreeNode r){val=v;left=l;right=r;} }44`;45 break;46 case 'CPP14':47 case 'CPP':48 prefix = `49// Tree helpers (C++)50struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode():val(0),left(nullptr),right(nullptr){} TreeNode(int v):val(v),left(nullptr),right(nullptr){} TreeNode(int v, TreeNode* l, TreeNode* r):val(v),left(l),right(r){} };51`;52 break;53 case 'C':54 prefix = `55/* Tree helpers (C) minimal struct */56typedef struct TreeNode { int val; struct TreeNode* left; struct TreeNode* right; } TreeNode;57`;58 break;59 case 'CSHARP':60 prefix = `61// Tree helpers (C#)62public class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(){} public TreeNode(int v){val=v;} public TreeNode(int v, TreeNode l, TreeNode r){val=v; left=l; right=r;} }63`;64 break;65 default:66 return { sourceCode, usedRunner: false };67 }68 return { sourceCode: prefix + sourceCode, usedRunner: false };69};70 71 72 