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

leetcode 235 Lowest Common Ancestor of a Binary Search Tree

Posted by BY on August 10, 2020

前言

持续更新了

正文

问题来源

本问题来自leetcode上的235题。

问题描述

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

示例 1:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出: 6 
解释: 节点 2 和节点 8 的最近公共祖先是 6。

示例 2:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
输出: 2
解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。

分析:

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val   int
 *     Left  *TreeNode
 *     Right *TreeNode
 * }
 */

func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {
	pv, qv, c := p.Val, q.Val, root.Val
    if pv > c && qv > c {
        return lowestCommonAncestor(root.Right, p, q)
    } else if pv < c && qv < c {
        return lowestCommonAncestor(root.Left, p, q)
    } else {
        return root
    }
}

总结:

勤思考。

结语

不管怎么样好好加油。