`
lovnet
  • 浏览: 6704024 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

第19题 在二叉查找树中找到两个结点的最低公共祖先 Lowest Common Ancestor

 
阅读更多

本文来自《 programming interviews exposed》一书

题目:

Given the value of two nodes in a binary search tree, find the lowest common ancestor. You may assume that both values already exist in the tree.

The function prototype is as follows:




20

/ \

8 22

/ \

4 12

/ \

10 14


比如在上面这个二叉搜索树中,要找4和14的lowest common ancestor, 就应该是8.


算法描述:

因为根节点是所有节点的祖先,又因为二叉树自身的性质,我们会得到,当两个目标节点都比当前节点小的时候,我们走左节点,当两个目标节点都比当前节点大的时候,我们走右节点。第一个碰到的节点的值在两个目标节点之间的节点就是 lowest common ancestor




算法的时间复杂度是O(logn)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics