通过暴力破解(递归)处理问题
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整型
*/
var res *TreeNode
func lowestCommonAncestor( root *TreeNode , o1 int , o2 int ) int {
// write code here
dfs(root, o1, o2)
return res.Val
}
func dfs(node *TreeNode, o1 int , o2 int ) bool {
if node == nil {
return false
}
left := dfs(node.Left, o1, o2)
right := dfs(node.Right, o1, o2)
if (right && left) || ((left || right) && ((node.Val == o1) || (node.Val == o2))) {
res = node
}
return left || right || (node.Val == o1) || (node.Val == o2)
}

京公网安备 11010502036488号