给出python二叉树两个点该如何求出其最小共同父节点
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本篇文章给大家分享的是有关给出python二叉树两个点该如何求出其最小共同父节点,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。题目是在给
千家信息网最后更新 2025年01月18日给出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安全错误
数据库的锁怎样保障安全
数据库设计字典取值效率
网络安全风险防范及策略
软件开发师怎么样
网络安全专业的收入
网络安全具体可指哪些事
西北大学网络安全专业
上海凌数网络技术
天津世纪云网络技术有限公司
mysql 数据库后缀名
网络安全意识调查问卷分析
服务器做安全防御网关
沈阳沪深私募互联网科技
金海网络技术有限公司
紫光股份中国网络安全
汇音网络技术有限公司
河北新一代软件开发品质保障
我的世界打怪升级装备服务器
无代码软件开发
手机app定位修改软件开发
香港mysql服务器
华为网络安全袭击事例
软件开发 后端工程师
软件开发凶敏捷方法的特点
三门峡哪个软件开发招收人
重庆网络技术公司招聘
山西ios软件开发服务为先
信息工程大学 网络安全
培养网络安全意识策略研究
锦州网络安全日
云南电力卫星授时服务器云空间