30 lines
425 B
Go
30 lines
425 B
Go
|
|
package main
|
||
|
|
|
||
|
|
type TreeNode struct {
|
||
|
|
Val int
|
||
|
|
Left *TreeNode
|
||
|
|
Right *TreeNode
|
||
|
|
}
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {
|
||
|
|
if root == nil || root == p || root == q {
|
||
|
|
return root
|
||
|
|
}
|
||
|
|
|
||
|
|
left := lowestCommonAncestor(root.Left, p, q)
|
||
|
|
right := lowestCommonAncestor(root.Right, p, q)
|
||
|
|
|
||
|
|
if left != nil && right != nil {
|
||
|
|
return root
|
||
|
|
}
|
||
|
|
if left != nil {
|
||
|
|
return left
|
||
|
|
}
|
||
|
|
return right
|
||
|
|
|
||
|
|
}
|