Given a binary search tree
(BST), find the lowest common ancestor
(LCA) of two given nodes in the BST.
According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself).”
Given binary search tree: root = [6,2,8,0,4,7,9,null,null,3,5]
6/ \2 8/ \ / \0 4 7 9/ \3 5
Example 1:
Input: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8Output: 6
Explanation: The LCA of nodes 2 and 8 is 6.
Example 2:
Input: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4Output: 2```Explanation: The LCA of nodes 2 and 4 is 2, since `a node can be a descendant of itself` according to the LCA definition.Constraints:* `All of the nodes' values will be unique`.* `p and q are different and both values will exist in the BST`.### Analyze1. if `p` node and `q` node are in `two` side of current iterator node `n`, the LCA is `n`;2. if `p` node and `q` node are in `one` side of current iterator node `n`, to loop the one step in the other side node;```js/*** Definition for a binary tree node.* function TreeNode(val) {* this.val = val;* this.left = this.right = null;* }*//*** @param {TreeNode} root* @param {TreeNode} p* @param {TreeNode} q* @return {TreeNode}*/var lowestCommonAncestor = function(root, p, q) {return lca(root, p, q)};var lca = function(node, p, q) {if (!node) return nullif ((p.val - node.val) * (q.val - node.val) <= 0) {return node} else if (p.val - node.val < 0) {return lca(node.left, p, q)} else {return lca(node.right, p, q)}}