不准访问
- 积分
- 546
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2020-11-18
- 最后登录
- 1970-1-1
|
二叉搜索树的最近公共祖先 解析
要利用二叉搜索树的性质
如果p和q都大于node值,则说明p和q在node的右子树中
如果p和q都小于node值,则说明p和q在node的左子树中
如果p小于node,q大于node值,则说明node即为p和q在二叉搜索树上的分叉口
也即最近公共祖先
- /**
- * 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) {
- while(true){
- if(root.val <= Math.max(p.val, q.val) && root.val >= Math.min(p.val, q.val)){
- break;
- }else if(root.val > Math.max(p.val, q.val)){
- root = root.left;
- }else{
- root = root.right;
- }
- }
- return root;
- }
- }
复制代码
复杂度分析
- 时间复杂度:O(n),其中 n*n* 是给定的二叉搜索树中的节点个数。分析思路与方法一相同。
- 空间复杂度:O(1)。
|
|