题解 | #二叉搜索树的最近公共祖先#

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

http://www.nowcoder.com/practice/d9820119321945f588ed6a26f0a6991f

简单容易写

思路:非递归,利用二叉搜索树的特点。左子树<根节点<右子树

  • 若p,q都比当前结点的值小,说明最近公共祖先结点在当前结点的左子树上,继续检查左子树;
  • 若p,q都比当前结点的值大,说明最近公共祖先结点在当前结点的右子树上,继续检查右子树;
  • 若p,q中一个比当前结点的值大,另一个比当前结点的值小,则当前结点为最近公共祖先结点

复杂度分析:基于二叉搜索策略,故时间复杂度O(log n),空间复杂度O(1)

public int lowestCommonAncestor (TreeNode root, int p, int q) {
		TreeNode curnode=root;//当前遍历结点
		while(true) {
			if(p<curnode.val&&q<curnode.val) curnode=curnode.left;//在左子树找
			else if(p>curnode.val&&q>curnode.val) curnode=curnode.right;//在右子树找
			else return curnode.val;
		}
	}
全部评论
老哥牛逼,我直接拿来主义
1 回复 分享
发布于 2023-05-09 11:07 陕西
思路很nice
点赞 回复 分享
发布于 2022-02-27 15:42
nice!
点赞 回复 分享
发布于 2022-04-01 19:01
牛皮
点赞 回复 分享
发布于 2022-04-21 18:22

相关推荐

点赞 评论 收藏
分享
03-03 10:35
3d人士会梦见住进比弗利山庄吗:这四个项目属于是初学者的玩具了。不知道面试官咋问,而且双非本搞算法除了9,还是保守至少c9
点赞 评论 收藏
分享
评论
31
2
分享

创作者周榜

更多
牛客网
牛客企业服务