题解 | #二叉搜索树的最近公共祖先#

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

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

package main

// import "fmt"
import . "nc_tools"

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

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param root TreeNode类
 * @param p int整型
 * @param q int整型
 * @return int整型
 */
func lowestCommonAncestor(root *TreeNode, p int, q int) int {
	// write code here
	var s1, s2 []int
	var flag bool
	var dfs func(*TreeNode, int, []int) []int
	dfs = func(root *TreeNode, target int, path []int) []int {
		if flag || root == nil {
			return path
		}
		path = append(path, root.Val)
		if target == root.Val {
			flag = true
			return path
		}
		if root.Val > target {
			path = dfs(root.Left, target, path)
			if flag {
				return path
			}
		} else {
			path = dfs(root.Right, target, path)
			if flag {
				return path
			}
		}
        if len(path) > 0 {
			path = path[:len(path)-1]
		}
        return path
	}
    s1 = dfs(root, p, s1)
    //  fmt.Println(s1)
    flag = false
    s2 = dfs(root, q, s2)
    //  fmt.Println(s2)
    var res int
    for i := 0; i < len(s1); i++ {
        if i < len(s2) && s1[i] == s2[i] {
            res = s1[i]
        } else {
            return res
        }
    }
    return res

}

全部评论

相关推荐

Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
投递长鑫存储等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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