Leetcode1676. Lowest Common Ancestor of a Binary Tree IV [Python]
2022/1/28 17:04:18
本文主要是介绍Leetcode1676. Lowest Common Ancestor of a Binary Tree IV [Python],对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
初步的思路是把长度超过2的node做2分,划分到长度为1 或者2的node sublist,这样就可以拿到LCA里处理。但是这样做会在第54(/57)个TC处TLE。先把这个写法留下,之后写可以全部过的版本。
class Solution: def lowestCommonAncestor(self, root: 'TreeNode', nodes: 'List[TreeNode]') -> 'TreeNode': if len(nodes) == 1:return nodes[0] if len(nodes) == 2:return self.findLCA(root, nodes[0], nodes[1]) if len(nodes) > 2: sep = len(nodes)//2 nodelist1 = nodes[:sep] nodelist2 = nodes[sep:] ans1 = self.lowestCommonAncestor(root, nodelist1) ans2 = self.lowestCommonAncestor(root, nodelist2) return self.findLCA(root, ans1, ans2) def findLCA(self, root, node1, node2): if not root:return None if root.val == node1.val or root.val == node2.val:return root leftpath = self.findLCA(root.left, node1, node2) rightpath = self.findLCA(root.right, node1, node2) if leftpath and rightpath:return root return leftpath if leftpath else rightpath
接下来是全部通过的版本,其实只要这样思考,root在nodes中,那一定是nodes, 而不在,则尝试root.left 和root.right看是否在nodes中,在就返回,不在,则继续node的left和right的left和right孙节点是否在nodes中,直到找到。
class Solution: def lowestCommonAncestor(self, root: 'TreeNode', nodes): if not root:return None if root in nodes:return root left = self.lowestCommonAncestor(root.left, nodes) right = self.lowestCommonAncestor(root.right, nodes) if left and right:return root if left:return left if right:return right return None
这篇关于Leetcode1676. Lowest Common Ancestor of a Binary Tree IV [Python]的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程