addOneRowJavascirpt

 avatar
unknown
javascript
2 years ago
1.2 kB
9
Indexable
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} val
 * @param {number} depth
 * @return {TreeNode}
 */
var addOneRow = function(root, val, depth) {
    if (depth === 1) {
        const node = new TreeNode(val);
        node.left = root;
        return node;
    }
    insertHelper(val, root, 1, depth);
    return root;
};

function insertHelper(value, node, depth, n) {
    if (node === null)
        return;
    
    // di level yg kita mau, tinggal lakuin 
    // operasi insert linkedlist data
    if (depth == n - 1) {
        let tempLeft = node.left;
        let tempRight = node.right;
        
        node.left = new TreeNode(value);
        node.left.left = tempLeft;
        
        node.right = new TreeNode(value);
        node.right.right = tempRight;
    } 
    // pakai recursive kalau belum dilevel yang mau di insert valuenya
    else {
        insertHelper(value, node.left, depth + 1, n);
        insertHelper(value, node.right, depth + 1, n);
    }
}