算法-树-二叉搜索树的最近公共祖先

在这里插入图片描述
在这里插入图片描述

此题前面有类似的题目 不过改为搜索树

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */

class Solution {
    
    
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
    
    
        if(root == null || root == p || root == q) {
    
    
            return root;
        }
		//可以用搜索树的性质直接返回  而不用判断是否为空
        if(p.val < root.val && q.val < root.val) {
    
    
            return lowestCommonAncestor(root.left, p, q);
        }

        if(p.val > root.val && q.val > root.val) {
    
    
            return lowestCommonAncestor(root.right, p, q);

        }
        
        
        return root;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_45100361/article/details/113524790