python怎么求二叉树的LCA
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"python怎么求二叉树的LCA"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!题目:
千家信息网最后更新 2025年12月02日python怎么求二叉树的LCA
本篇内容介绍了"python怎么求二叉树的LCA"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
题目:求二叉树的LCA,也就是两个节点的最低公共祖先。比如上图的二叉树,节点2和8的LCA是6,节点2和4的LCA是2。
思路:观察给定的二叉树可知,二叉树中任何节点:左节点的值 < 根节点的值 < 右节点的值。根据这个性质,可以做出如下判断:
如果p、q都比根节点小,则在左子树中递归查找最低公共祖先节点。
如果p、q都比根节点大,则在右子树中递归查找最低公共祖先节点。
如果p、q一个比根节点大,一个比根节点小,或者有一个等于根节点,则根节点即为最低公共祖先节点。
Language : cpp
递归方法:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (p->val < root->val && root->val > q->val)return lowestCommonAncestor(root->left, p, q);else if (p->val > root->val && root->val < q->val)return lowestCommonAncestor(root->right, p, q);elsereturn root; }};Language : python
递归方法:
# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object):def lowestCommonAncestor(self, root, p, q):""" :type root: TreeNode :type p: TreeNode :type q: TreeNode :rtype: TreeNode """if p.val < root.val > q.val:return self.lowestCommonAncestor(root.left, p, q)elif p.val > root.val < q.val:return self.lowestCommonAncestor(root.right, p, q)else:return root
迭代方法:
# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object):def lowestCommonAncestor(self, root, p, q):""" :type root: TreeNode :type p: TreeNode :type q: TreeNode :rtype: TreeNode """while True:if p.val < root.val > q.val: root = root.leftelif p.val > root.val < q.val: root = root.rightelse:return root
"python怎么求二叉树的LCA"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
节点
最低
递归
方法
祖先
内容
更多
知识
子树
实用
学有所成
接下来
上图
两个
也就是
困境
实际
思路
性质
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
天津会计软件开发价目
杭州随笔记网络技术有限公司上市
sql数据库中文翻译
技术先进的服务器监控工具
数据库的更新周期
湖州游戏软件开发培训
流体力学英语外文数据库
服务器机柜防护视频
数据库日志库的意义
让家用电脑变成服务器
便宜的轻量化服务器
现在网络安全审查
ns暗黑2选择服务器
公安部网络安全优秀
图形界面如何删除数据库
智能软件开发的企业
可以自己搭建服务器的游戏有哪些
前端数据库连接错误
杨浦区网络技术开发咨询热线
车载网络技术课程标准
数据库表怎么新增字段
伊春网络技术工程师证
网络安全产品售后工程师面试
交行深圳软件开发中心
软件开发企业平均净利润分析
数据库安全解决方案
软件开发工程化系统化的内容
让家用电脑变成服务器
用友t3装不了数据库
网络安全竞赛乌市一中