标签:
Description:
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 v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”
_______6______
/ ___2__ ___8__
/ \ / 0 _4 7 9
/ 3 5
For example, the lowest common ancestor (LCA) of nodes 2
and 8
is 6
. Another example is LCA of nodes 2
and 4
is 2
, since a node can be a descendant of itself according to the LCA definition.
给出一颗二叉查找树,两个节点,找出这两个节点的最近公共祖先。
思路:递归可以使这道题变得异常的简单。如果两个节点是在根节点两侧,那么最近的公共祖先就是这个根节点,如果是左侧(右侧),则把根节点递归到左子树(右子树)。
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 12 if(root==null || p==null || q==null) { 13 return null; 14 } 15 int max = p.val > q.val ? p.val : q.val; 16 int min = p.val < q.val ? p.val : q.val; 17 if(max < root.val) { 18 return lowestCommonAncestor(root.left, p, q); 19 } 20 else if(min > root.val) { 21 return lowestCommonAncestor(root.right, p, q); 22 } 23 else { 24 return root; 25 } 26 27 } 28 }
LeetCode——Lowest Common Ancestor of a Binary Search Tree
标签:
原文地址:http://www.cnblogs.com/wxisme/p/4726001.html