0

I have the following tree structure:

class Binarytree {
  constructor(val) {
    this.val = val;
    this.left = null;
    this.right = null;
  }

  insertLeft(val) {
    this.left = val;
  }

  insertRight(val) {
    this.right = val;
  }
}

I'm trying to find a parent node from a node value. I created the function below:

const getParent = function(root, n, parent) {
  if (!root) return null;
  if (root.val === n) return parent;
  else {
    getParent(root.left, n, root);
    getParent(root.right, n, root);
  }
};

Here is my test case:

const tree = new BinaryTree(1);
const node2 = new BinaryTree(2);
const node3 = new BinaryTree(3);
const node4 = new BinaryTree(4);
const node5 = new BinaryTree(5);
node2.insertRight(node4);
node3.insertRight(node5);
tree.insertLeft(node2);
tree.insertRight(node3);

const test = getParent(tree, 4, tree);

It is always returning null.

1 Answer 1

1

You need to return the nested call of getParent. You could chain the calls with logical OR ||.

class BinaryTree {
    constructor(val) {
        this.val = val;
        this.left = null;
        this.right = null;
    }

    insertLeft(val) {
        this.left = val;
    }

    insertRight(val) {
        this.right = val;
    }
}

const getParent = function(root, n, parent) {
    if (!root) return null;
    if (root.val === n) return parent;
    // return and chain with logical OR
    return getParent(root.left, n, root) || getParent(root.right, n, root);
}


const tree = new BinaryTree(1);
const node2 = new BinaryTree(2);
const node3 = new BinaryTree(3);
const node4 = new BinaryTree(4);
const node5 = new BinaryTree(5);
node2.insertRight(node4);
node3.insertRight(node5);
tree.insertLeft(node2);
tree.insertRight(node3);

const test = getParent(tree, 4, tree);
console.log(test);

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you! I need to return the first one (left or right) that is not null.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.