热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【剑指offer】36.二叉搜索树与双向链表

Python3本题利用中序遍历深度优先搜索解决。参考:https:leetcode.cnproblemser-cha-sou-suo-shu-yu-shuang-x
Python3

本题利用中序遍历+深度优先搜索解决。
参考:https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/solution/mian-shi-ti-36-er-cha-sou-suo-shu-yu-shuang-xian-5/

根据上述思路,代码如下:

# Definition for a binary tree node.
# class Node:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = rightclass Solution:# 深度优先搜索,中序遍历二叉搜索树def dfs(self, cur):if not cur: # 当节点cur为空,代表越过叶子节点,直接返回return Noneself.dfs(cur.left) # 递归左子树# 构建链表if not self.pre: # 如果pre为空,说明正在访问链表的头节点,令head为curself.head = curelse: # 否则,建立双向引用self.pre.right = curcur.left = self.preself.pre = cur # 更新preself.dfs(cur.right) # 递归右子树# 主函数def treeToDoublyList(self, root: 'Node') -> 'Node':# 特例:如果root为空,说明二叉搜索树为空,则返回的链表亦为空if not root:return None# 定义空节点preself.pre = Noneself.dfs(root)# 链表的首尾相连self.head.left = self.preself.pre.right = self.headreturn self.head

时间复杂度分析

假设二叉搜索树有NNN个节点,中序遍历需要遍历所有节点,因此时间复杂度为O(N)O(N)O(N)


推荐阅读
  • 本文介绍了如何使用Python在字符串列表的每个K个字符之后插入指定的值,提供了两种不同的实现方法。 ... [详细]
  • Python 语言本身并不直接支持数组结构,但可以通过 Python 列表(List)来实现类似的功能。对于需要数组特性的应用,还可以考虑使用 NumPy 库。 ... [详细]
  • 本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了gi ... [详细]
  • KKCMS代码审计初探
    本文主要介绍了KKCMS的安装过程及其基本功能,重点分析了该系统中存在的验证码重用、SQL注入及XSS等安全问题。适合初学者作为入门指南。 ... [详细]
  • 本文档详细介绍了Robot Framework的基础知识、安装配置方法及其实用技巧。从环境搭建到编写第一个测试用例,涵盖了一系列实用的操作指南和最佳实践。 ... [详细]
  • Python图像处理库概览
    本文详细介绍了Python中常用的图像处理库,包括scikit-image、Numpy、Scipy、Pillow、OpenCV-Python、SimpleCV、Mahotas、SimpleITK、pgmagick和Pycairo,旨在帮助开发者和研究人员选择合适的工具进行图像处理任务。 ... [详细]
  • 图像中的边缘信息主要集中在高频部分,因此图像锐化或边缘检测实质上是进行高频滤波。微分运算能够增强信号的高频成分,从而在空间域中通过计算微分实现图像锐化。本文将详细介绍如何使用 Python 实现 Canny 边缘检测算法。 ... [详细]
  • 快速排序是基于分治策略的一种排序算法,其平均时间复杂度为O(n log n),在大多数情况下表现优于其他排序算法。本文将详细介绍快速排序的工作原理,并提供一个Java语言的具体实现。 ... [详细]
  • 本文探讨了Python编程语言中的基础数据类型,包括整型、布尔型、字符串等,并深入介绍了字符串处理的各种方法和技术。 ... [详细]
  • 安装MemcachedMemcached整理安装PythonMemcachedAPIpython操作啊Memcached使用Python-memcached模块下载安装:https ... [详细]
  • Flask框架入门指南:Windows平台下的首个Python 2.7项目
    本文将指导您如何在Windows平台上使用Python 2.7搭建一个简单的Flask应用,包括项目结构的创建、基本路由的设置以及HTML模板的设计。 ... [详细]
  • 本文介绍如何利用Python中的Epoll机制构建一个高效的Web服务器,该服务器能够处理多个并发连接,并向每个连接的客户端返回预定义的响应文本。通过使用Epoll,服务器可以实现高性能的I/O多路复用。 ... [详细]
  • 深入理解React中的组件及父子组件间的通信机制
    本文详细探讨了React框架中组件的基本概念,特别是父组件与子组件之间的数据传递和方法调用方式。通过具体的代码示例,解释了如何利用props和refs实现组件间的高效通信。 ... [详细]
  • 立志要引领电视行业趋势的荣耀,最终还是向价格“弯了腰”
    文|佘凯文来源|智能相对论(aixdlun)5月份,“大屏”市场又起风云,各大品牌不约而同地发布了自家新产品。5月26日࿰ ... [详细]
  • 导读上一篇讲了zsh的常用字符串操作,这篇开始讲更为琐碎的转义字符和格式化输出相关内容。包括转义字符、引号、print、printf的使用等等。其中很多内容没有必要记忆,作为手册参 ... [详细]
author-avatar
baaiiii
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有