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;
}
}
}
网友评论