给出python二叉树两个点该如何求出其最小共同父节点
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇文章给大家分享的是有关给出python二叉树两个点该如何求出其最小共同父节点,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。题目是在给
千家信息网最后更新 2025年11月08日给出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安全错误
数据库的锁怎样保障安全
数据库表在哪里
软件开发环境简介
现在学习什么网络技术好
近期国家在关注网络安全吗
软件开发中的模式有哪些
苏州阿里云数据库监控
芯片模拟软件开发
计算机网络技术适合女孩子
服务器安全面板图片
初学者学数据库
broker是服务器吗
c 访问数据库层代码
steam链接服务器失败
软件开发总工期怎么算
telegram用哪国服务器
学校召开网络安全专题会议
学生暑假网络安全图片
服务器增强管理那个在哪设置
内蒙古数据库安全箱价目表
岳阳软件开发近期价格
2020年假期网络安全教育
青岛鑫沙互联网科技有限公
衢州电脑软件开发是做什么的
小学网络安全培训内容
java 数据库验证密码
COD17匹配哪个服务器人多
网络安全三年级手抄报装饰
2022c4网络技术挑战赛
超聚变服务器彩页
重大网络安全事件处置情况