235. 二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

例如,给定如下二叉搜索树:  root = [6,2,8,0,4,7,9,null,null,3,5]

 

示例 1:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出: 6
解释: 节点 2 和节点 8 的最近公共祖先是 6

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree

 1 public class LowestCommonAncestorofaBinarySearchTree {
 2     static class TreeNode{
 3         int val;
 4         TreeNode left;
 5         TreeNode right;
 6         TreeNode(int x) {
 7             this.val = x;
 8         }
 9     }
10 
11     public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
12         if(root == null) {
13             return null;
14         }        
15         if((root.val >= p.val && root.val <= q.val) || (root.val <= p.val && root.val >= q.val)) {
16             return root;
17         }
18         if(p.val > root.val && q.val > root.val) {
19             return lowestCommonAncestor(root.right, p, q);
20         }
21         if(p.val < root.val && q.val < root.val) {
22             return lowestCommonAncestor(root.left, p, q);
23         }
24         return null;
25     }
26 }
 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 
11 class Solution {
12     private TreeNode result = null;
13     public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
14         if(root == null) {
15             return null;
16         }
17         if((root.val >= p.val && root.val <= q.val) || (root.val <= p.val && root.val >= q.val)) {
18             result = root;
19         }
20         if(p.val > root.val && q.val > root.val) {
21             lowestCommonAncestor(root.right, p, q);
22         }
23         if(p.val < root.val && q.val < root.val) {
24             lowestCommonAncestor(root.left, p, q);
25         }
26         return result;
27     }
28 }
无论有多困难,都坚强的抬头挺胸,人生是一场醒悟,不要昨天,不要明天,只要今天。不一样的你我,不一样的心态,不一样的人生,顺其自然吧
原文地址:https://www.cnblogs.com/xiyangchen/p/11135996.html