class TreeNode:
def init(self, x):
self.val = x
self.left = None
self.right = None
@param root TreeNode类
@param o1 int整型
@param o2 int整型
@return int整型
找二叉树中节点1和2的最近公共祖先节点
class Solution:
def lowestCommonAncestor(self, root, o1, o2 ):
res = self.process(root, o1, o2)
return res.val # 返回最近公共祖先节点值
# write code here
def process(self, root, o1, o2): # 递归
if not root or root.val == o1 or root.val == o2: # 节点为空/节点为o1/节点为o2都直接返回该节点
return root
left = self.process(root.left, o1, o2) # 左子树
right = self.process(root.right, o1, o2) # 右子树
if left and right: # 当左右都不返回None时找到了最近公共祖先节点,即为root
return root
return left if left else right # 左右不都为None时,返回非None的那个,左右都返回None时整体返回None