题解 | #两个链表的第一个公共结点#
二叉搜索树的最近公共祖先
http://www.nowcoder.com/practice/d9820119321945f588ed6a26f0a6991f
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @param p int整型
* @param q int整型
* @return int整型
*/
public int lowestCommonAncestor (TreeNode root, int p, int q) {
int c = root.val ;
int[] ch = new int[2] ;
if(p > q) {
ch[0] = q ;
ch[1] = p ;
} else {
ch[0] = p ;
ch[1] = q ;
}
if(c > ch[1]) {//根节点比表两个子节点都大,去左子树找
return lowestCommonAncestor(root.left , p , q) ;
} else if(c < ch[0]) {//根节点比表两个子节点都小,去右子树找
return lowestCommonAncestor(root.right ,p , q) ;
} else {//根节点就在中间,必定是最近祖先
return c ;
}
}
}
一个菜鸟的算法刷题记录 文章被收录于专栏
分享一个菜鸟的成长记录
