题目
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
235. 二叉搜索树的最近公共祖先
题目描述
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
最近公共祖先
对于有根树T的两个结点p、q,最近公共祖先表示为一个结点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)
思路
利用了二叉搜索树的中序遍历的有序性
1.循环迭代二叉搜索树
2.当前节点大于q、q节点时,则获取左子数为当前节点
3.当前节点小于q、q节点时,则获取右子数为当前节点
4.否在当前节点位两个节点的最近共祖先
代码
package leetcode
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
// lowestCommonAncestor
// 二叉搜索树的最近公共祖先
func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {
for root != nil {
if root.Val > p.Val && root.Val > q.Val {
root = root.Left
} else if root.Val < p.Val && root.Val < q.Val {
root = root.Right
} else{
break
}
}
return root
}
参考
来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/lo…
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。