python练习之剑指 Offer 07. 重建二叉树
发布日期:2021-06-29 12:21:58
浏览次数:2
分类:技术文章
本文共 1314 字,大约阅读时间需要 4 分钟。
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
例如,给出
前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树:限制:
0 <= 节点个数 <= 5000
来源:力扣(LeetCode)
分析
前序中序建树,递归老步骤:判断左右边界->赋值给根->找出中序中的根位置->左右递归->返回根# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode: ##递归建树 def recursive(prel:int, prer:int, inl:int, inr:int) -> TreeNode: if prel > prer: return None #建立根 root = TreeNode(preorder[prel]) #找出目前根在inorder中的位置 i = hashtable[preorder[prel]] #左右递归 root.left = recursive(prel+1, prel+i-inl, inl, i-1) root.right = recursive(prel+i-inl+1, prer, i+1, inr) return root n = len(inorder) #建立hashtable快速指出inorder中元素的索引 hashtable = { num : i for i,num in enumerate(inorder) } return recursive(0, n-1, 0, n-1)
总结
1.python中的dict数据结构加上enumerate函数,用enumerate生成list对应的下表(注意,顺序是先序列号后元素),再用dict将对应元素和下表关联起来,这样的哈希映射使得我们快速找到inorder中的根位置,而不用c++中的while逐个查找(详见) 2.python中的空指针为None或nullptr,不要与c++中的NULL混淆 3.python中的函数参数列表中的格式是类似dict格式,要与c++区分开转载地址:https://bridge-killer.blog.csdn.net/article/details/114974847 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月15日 17时41分59秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
终端大改造:只需五步,构建你的梦中情“端”
2019-04-29
你的代码“balance”怎么样?找到简洁性和可读性的平衡点
2019-04-29
中科院刘康:低资源环境下的事件知识抽取
2019-04-29
提高软件工程技能的关键技术,这些资源赶紧收藏起来
2019-04-29
走进数据科学:最好是通过比网课更好的方法
2019-04-29
机器学习背后的数学支柱,这5本书帮你搞定!
2019-04-29
AI革命第一步:最容易被忽略但必不可少的物联网
2019-04-29
2020年开发运维工具清单:选择开发运维工具堆栈吧
2019-04-29
效率提升法则:高效人士不会去做的4件事
2019-04-29
8.PostgreSQL约束
2019-04-29
【技术分享】使用AES加密技术保障数据安全
2019-04-29
【应用实例】布线多?成本高?不可靠?泽耀方案没烦恼!
2019-04-29
数据可视化工具:Matplotlib绘图
2019-04-29
用Python写个超级小恐龙跑酷游戏,上班摸鱼我能玩一天
2019-04-29
闺蜜看我用Python画了一幅樱花图,吵着要我给他介绍程序员小哥哥
2019-04-29
【Python爬虫实战】知乎热榜数据采集,上班工作摸鱼两不误,知乎热门信息一网打尽
2019-04-29
Python抓取哔哩哔哩up主信息:只要爬虫学的好,牢饭吃的早
2019-04-29
有个码龄5年的程序员跟我说:“他连wifi从来不用密码”
2019-04-29
领导让我整理上个季度的销售额,幸好我会Python数据分析,你猜我几点下班
2019-04-29