236. Lowest Common Ancestor of a Binary Tree

by samur3

JavaScript

/*let node3 = new TreeNode(4);
let node4 = new TreeNode(5);
let node1 = new TreeNode(2,node3,node4);
let node2 = new TreeNode(3);
let root = new TreeNode(1,node1,node2);*/

/*let node3 = new TreeNode(2);
let node1 = new TreeNode(1,undefined,node3);
let node2 = new TreeNode(3);
let root = new TreeNode(3,node1);*/
//[0,1,2,3,4,5]
//let arr = [-10,-3,0,5,9];
//let root = new TreeNode(1,null,null);


/*let node5 = new TreeNode(2);
let node3 = new TreeNode(2);
let node2 = new TreeNode(2,node5);
let node1 = new TreeNode(2,node3);
let root = new TreeNode(1,node1,node2);*/

//[5,4,1,null,1,null,4,2,null,2,null]

//let node6 = new TreeNode(2);
//[3,9,20,null,null,15,7]
//let node5 = new TreeNode(2);
let node8 = new TreeNode(4);
let node7 = new TreeNode(7);
let node6 = new TreeNode(2,node7,node8);
let node5 = new TreeNode(6);
let node4 = new TreeNode(8);
let node3 = new TreeNode(0);
let node2 = new TreeNode(1,node3,node4);
let node1 = new TreeNode(5,node5,node6);
let root = new TreeNode(-3,node1,node2);

let p = new TreeNode(5);
let q = new TreeNode(1);
//let target = 19.5;

/*var sortedArrayToBST = function(arr) {   
	let len = arr.length;
  let middle = Math.floor(len / 2);
  let root = new TreeNode(arr[middle]);  
  for(let i= middle+1; i < len; i++){
  	buildTree(root,arr[i]);
  }
  for(let j= 0; j < middle; j++){
  	buildTree(root,arr[j]);
  }
  return root;
}*/

var lowestCommonAncestor = function(root, p, q) {
     p = p.val;
     q = q.val;
	if(p === root.val || q === root.val) return root;
    let result = null;
    let paths = [];
    let path = new Array();
    //get path that contains p and q
    function helper(root,p,q,path){
			if(!root) return;
    	
      if(root.right || root.left){
				path.push(root.val);    	
      }

      if(!root.right && !root.left){
      	path.push(root.val);    	
    		paths.push([...path]);              
      }
      
      helper(root.left,p,q,path);
      helper(root.right,p,q,path);
      
      path.pop();
    }
   ...