2022-03-27 18:35:17 +08:00
< p > Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.< / p >
< p > According to the < a href = "https://en.wikipedia.org/wiki/Lowest_common_ancestor" target = "_blank" > definition of LCA on Wikipedia< / a > : “ The lowest common ancestor is defined between two nodes < code > p< / code > and < code > q< / code > as the lowest node in < code > T< / code > that has both < code > p< / code > and < code > q< / code > as descendants (where we allow < b > a node to be a descendant of itself< / b > ).” < / p >
< p > < / p >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 1:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< img alt = "" src = "https://assets.leetcode.com/uploads/2018/12/14/binarytree.png" style = "width: 200px; height: 190px;" / >
< pre >
< strong > Input:< / strong > root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1
< strong > Output:< / strong > 3
< strong > Explanation:< / strong > The LCA of nodes 5 and 1 is 3.
< / pre >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 2:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< img alt = "" src = "https://assets.leetcode.com/uploads/2018/12/14/binarytree.png" style = "width: 200px; height: 190px;" / >
< pre >
< strong > Input:< / strong > root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4
< strong > Output:< / strong > 5
< strong > Explanation:< / strong > The LCA of nodes 5 and 4 is 5, since a node can be a descendant of itself according to the LCA definition.
< / pre >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 3:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< pre >
< strong > Input:< / strong > root = [1,2], p = 1, q = 2
< strong > Output:< / strong > 1
< / pre >
< p > < / p >
< p > < strong > Constraints:< / strong > < / p >
< ul >
< li > The number of nodes in the tree is in the range < code > [2, 10< sup > 5< / sup > ]< / code > .< / li >
< li > < code > -10< sup > 9< / sup > < = Node.val < = 10< sup > 9< / sup > < / code > < / li >
< li > All < code > Node.val< / code > are < strong > unique< / strong > .< / li >
< li > < code > p != q< / code > < / li >
< li > < code > p< / code > and < code > q< / code > will exist in the tree.< / li >
< / ul >