二叉搜索树的最近公共祖先
解法一:递归法
public class LeetCode_235 {
public static TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if (p == root) {
return p;
}
if (q == root) {
return q;
}
if (p.val < root.val && q.val < root.val) {
return lowestCommonAncestor(root.left, p, q);
} else if (p.val > root.val && q.val > root.val) {
return lowestCommonAncestor(root.right, p, q);
} else {
return root;
}
}
public static void main(String[] args) {
TreeNode root = new TreeNode(6);
TreeNode node_2 = new TreeNode(2);
TreeNode node_8 = new TreeNode(8);
root.left = node_2;
root.right = node_8;
root.left.left = new TreeNode(0);
root.left.right = new TreeNode(4);
root.left.right.left = new TreeNode(3);
root.left.right.right = new TreeNode(5);
root.right.left = new TreeNode(7);
root.right.right = new TreeNode(9);
TreeNode result = lowestCommonAncestor(root, node_2, node_8);
System.out.println(result.val);
}
}