推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

用深度优先搜索求解二叉树最近公共祖先的Python实现

更新时间:2026-10-27 12:45:06 大小:38K 上传用户:潇潇江南查看TA发布的资源 标签:深度优先搜索二叉树最近公共祖先Python递归算法 下载积分:2分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

用深度优先搜索求解二叉树最近公共祖先的Python实现 问题定义 给定一棵二叉树和其中的两个节点 p、q,求它们最近的公共祖先(同时是 p 和 q 的祖先,且深度尽可能大的节点)。 例如树根为 3,左子 5(其子 6、2),右子 1。若 p = 5、q = 1,则最近公共祖先为根节点 3。 算法思路 求最近公共祖先用深度优先搜索递归实现,核心是"自底向上"地判断每个节点是否包含 p 或 q。 递归函数 lca(node, p, q): 若 node 为空,返回 None。 若 node 等于 p 或 q,返回 node。 递归在左、右子树中查找。 若左右子树都返回非空,说明 p、q 分别位于 node 两侧,node 就是最近公共祖先。 若只在一侧非空,返回该侧结果。 Python 代码实现 pythonclass TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = rightdef lowest_common_ancestor(root, p, q): if root is None or root == p or root == q: return root left = lowest_common_ancestor(root.left, p, q) right = lowest_common_ancestor(root.right, p, q) if left and right: # 两侧各有一个,root 是祖先 return root return left if left else right# 构造树:3 -> 左5 右1,5->左6 右2n6, n2 = TreeNode(6), TreeNode(2)

部分文件列表

文件名 大小
用深度优先搜索求解二叉树最近公共祖先的Python实现.docx 38K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载