二叉搜索树的最近公共祖先
代码实现
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
TreeNode max = p.val>q.val?p:q;
TreeNode min = p.val<q.val?p:q;
while (root!=null){
if (root.val>=min.val&&root.val<=max.val) return root;
if (root.val>max.val) root = root.left;
if (root.val<min.val) root = root.right;
}
return root;
}
思路
在基于二分搜索树的特点进行层层迭代,最终当前节点值处于两个节点值之间时,即是这两个节点的共同父结点