有关二叉树的做题笔记,Python实现
二叉树的定义
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
236. 二叉树的最近公共祖先 Lowest Common Ancestor of a Binary Tree
首先如果root为空,返回root,然后如果root就是p或者q,那root就是最近公共祖先。然后分别对左子树和右子树做递归并保存结果,如果两边都能找到,证明本节点就是最近公共祖先,如果一边找得到,一边找不到,则往能找到的那边继续找下去。
class Solution:
def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
if root is None:
return None
if root == p or root == q:
return root
left = self.lowestCommonAncestor(root.left, p, q)
right = self.lowestCommonAncestor(root.right, p, q)
if left or right:
if left is None:
return right
elif right is None:
return left
else:
return root
else:
return None
该博客是关于二叉树的做题笔记,使用Python实现。介绍了二叉树的定义,还讲解了LeetCode第236题二叉树的最近公共祖先的解题思路,若root为空或为p、q则为最近公共祖先,通过左右子树递归查找,还提及下一题是二叉搜索树的最近公共祖先。
1220

被折叠的 条评论
为什么被折叠?



