题解 | #在二叉树中找到两个节点的最近公共祖先#

在二叉树中找到两个节点的最近公共祖先

https://www.nowcoder.com/practice/e0cc33a83afe4530bcec46eba3325116

package main


import . "nc_tools"

/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param root TreeNode类
 * @param o1 int整型
 * @param o2 int整型
 * @return int整型
 */
func lowestCommonAncestor(root *TreeNode, o1 int, o2 int) int {
	// write code here
	var findCommonAncestor func(node *TreeNode) *TreeNode
	findCommonAncestor = func(node *TreeNode) *TreeNode {
		if node == nil || node.Val == o1 || node.Val == o2 {
			return node
		}
		left := findCommonAncestor(node.Left)
		right := findCommonAncestor(node.Right)
        if left != nil && right != nil {
            return node
        }
        if left != nil {
            return left
        }
        return right
	}
    common := findCommonAncestor(root)
    if common != nil {
        return common.Val
    }
    return -1
}

全部评论

相关推荐

03-12 15:34
已编辑
北京邮电大学 Java
呓语0613:老哥你这黑马点评改造是在哪里看的
点赞 评论 收藏
分享
挣K存W养DOG:我记得好多人说这个公司就是白嫖方案的,现在有大体方案要让你给他展示实现细节了,也是无敌了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务