给出python二叉树两个点该如何求出其最小共同父节点
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关给出python二叉树两个点该如何求出其最小共同父节点,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。题目是在给
千家信息网最后更新 2026年11月01日给出python二叉树两个点该如何求出其最小共同父节点
本篇文章给大家分享的是有关给出python二叉树两个点该如何求出其最小共同父节点,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
题目是在给出二叉树中两个点p,q,求出其最小共同父节点(LCA Lowest Common Ancestor),如下图很好理解,比如5和1的共同父节点是3;6和7的最小共同父节点是5;而5和4的最小共同父节点是5本身。
考虑了一下,其实思路很简答,首先用前序或者层级遍历二叉树得出节点队列,因为前序和层级都是先遍历父节点再子节点,这样队列后的节点的父节点一定存在队列中。然后从后往前反序遍历这个节点队列,如果是给出p, q这两个中的父节点,则替换为其父节点,如果p和q是同一个节点,就是其最小共同父节点。
代码如下,使用层级遍历,遍历的时候判断是否已经读取p,q;如果都读取了停止遍历,避免读取不必要数据。
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode': preNodeList = [] checkList = [root] count = 2 while count > 0: nextList = [] for node in checkList: preNodeList.append(node) if node == p or node == q: count = count -1 if count == 0: pass if node.left != None: nextList.append(node.left) if node.right != None: nextList.append(node.right) checkList = nextList while p!= q: currentNode = preNodeList.pop() if currentNode.right == p or currentNode.left == p: p = currentNode if currentNode.right == q or currentNode.left == q: q = currentNode return p
以上就是给出python二叉树两个点该如何求出其最小共同父节点,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
节点
最小
两个
队列
求出
层级
就是
更多
知识
篇文章
实用
代码
工作会
思路
数据
文章
时候
是在
看吧
知识点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网与科技
互联网科技工作委员会
互联网和科技技术
互联网科技资迅
麻工互联网科技
左右互联网络科技
恒银科技与互联网金融
华服互联网科技官网
宝灵互联网科技有限公司
中国航天科技大学国际工业互联网
本届互联网博览会上的黑科技
济南有互联网科技公司吗
无锡工业互联网科技有限公司
锡山区互联网智能科技产品供应
银行科技岗属于互联网吗
互联网营销推广黑科技
陕西九四连强互联网科技有限公司
互联网科技收购价值
众联互联网络科技
上海旺乐尼互联网科技有限公司
科技互联网产品
科技企业和互联网企业
青岛互联网科技公司
融势互联网科技
新华互联网科技校企合作
互联网巨头投资的硬核科技
华脉科技工业互联网产品
卫星互联网科技股票
互联网行业科技股
互联网科技快讯热点