美文网首页数据结构与算法
Leetcode 235 二叉搜索树的最近公共祖先

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

作者: itbird01 | 来源:发表于2021-12-21 07:24 被阅读0次

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

题意:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]

解题思路

解法1:
1.分析题意,重在判断q、p是否处于同一分支中
2.如果处于不同的分支,则当前的root为结果节点,如果处于相同的分支,则继续遍历其左子树或者右子树
3.条件例如:root.val < p.val && root.val < q.val为右子树

解题遇到的问题

后续需要总结学习的知识点

需要深入总结学习二叉搜索树的数据结构的特点、应用、搜索、插入、删除

##解法1
class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p,
            TreeNode q) {
        if (root == null) {
            return null;
        }
        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 class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) {
            val = x;
        }
    }
}

相关文章

网友评论

    本文标题:Leetcode 235 二叉搜索树的最近公共祖先

    本文链接:https://www.haomeiwen.com/subject/sntzfrtx.html