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

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

http://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, p int, q int) int {
	if root == nil {
		return -1
	}

	if root.Val == p || root.Val == q {
		return root.Val
	}

	left := lowestCommonAncestor(root.Left, p, q)
	right := lowestCommonAncestor(root.Right, p, q)

	if left > -1 && right > -1 {
		return root.Val
	}
	if left > -1 {
		return left
	}
	if right > -1 {
		return right
	}
	return -1
}

全部评论

相关推荐

10-02 19:29
已编辑
浙江科技大学 运营
职场水母:等春招吧,春招才是双非的主战场,放心吧佬,实习很好,肯定能进大厂的
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务