diff --git "a/\347\262\276\351\200\211/04.08.\351\246\226\344\270\252\345\205\261\345\220\214\347\245\226\345\205\210/main.go" "b/\347\262\276\351\200\211/04.08.\351\246\226\344\270\252\345\205\261\345\220\214\347\245\226\345\205\210/main.go" new file mode 100644 index 0000000..1b1352a --- /dev/null +++ "b/\347\262\276\351\200\211/04.08.\351\246\226\344\270\252\345\205\261\345\220\214\347\245\226\345\205\210/main.go" @@ -0,0 +1,30 @@ +package main + +type TreeNode struct { + Val int + Left *TreeNode + Right *TreeNode +} + +func lowestCommonAncestor(root *TreeNode, p *TreeNode, q *TreeNode) *TreeNode { + if root == nil { + return nil + } + + if root.Val == p.Val || root.Val == q.Val { + return root + } + + lNode := lowestCommonAncestor(root.Left, p, q) + rNode := lowestCommonAncestor(root.Right, p, q) + + if lNode != nil && rNode != nil { + return root + } + + if lNode == nil { + return rNode + } + + return lNode +}