千家信息网

python怎么求二叉树的LCA

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"python怎么求二叉树的LCA"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!题目:
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 互联网科技公司简介 互联网下的科技发展 浩特互联网科技 成都狮子座互联网科技 互联网科技大会案例 广州慧亚互联网科技怎么样 互联网科技中介 现代互联网科技股 宁夏众和广鑫互联网科技有限公司 佳云科技和互联网广告 链环科技传统企业怎么转型互联网 亳州好赞互联网科技有限公司 工业互联网等科技实现智能化赋能 为客找房互联网科技公司怎么样 富国互联网金融科技混合基金 工业互联网科技创业 云南互联网科技学费 长沙渺峰互联网科技有限公司 互联网科技的前景 武汉亿视互联网科技有限公司 深圳市人人互联网科技有限公司 嘟嘟瓜互联网科技 齐家互联网科技 卓越科技(互联网 ) 兼蜜互联网科技 每天都有哪些好的互联网科技 黑云互联网科技有限公司 互联网界的黑科技 西安左小互联网科技有限公司 互联网科技创业有什么好项目
0