| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> JZ36 二叉搜索树与双向链表 -> 正文阅读 |
|
[数据结构与算法]JZ36 二叉搜索树与双向链表 |
目录 题目介绍
输入一颗二叉搜索树,将该二叉搜索树转换为一个排序的双向链表 如:
数据范围:输入二叉树的结点数0 <= n <= 1000,二叉树中每个结点的值0 <= val <= 1000 要求:空间复杂度为O(1),时间复杂度O(n)
要求不能创建新的结点,只能调整树中的结点指向,树中结点的左指针指向前驱,右指针指向后继 返回链表中第一个结点的指针 函数返回的TreeNode,有左右指针,其实可以看成一个双向链表 不用输出双向链表,程序会根据返回值自动打印输出 二叉搜索树性质介绍?二叉搜索树又称二叉排序树,它具有以下性质:
题目分析题目要将一颗二叉搜索树转化为一个有序的双向链表,从上面二叉搜索树的性质不难得出,该二叉搜索树的中序遍历出的结果刚好是从小到大的顺序,题目要求结点的left指针指向前驱,right指针指向后继,故做题思路如下:
解题方法
画图分析过程: ? ? 具体步骤如下:
因为题目给出了结点的最大个数为1000,并且要求空间复杂度为O(1),所以我们可以将中序遍历的结点存入一个数组中,该数组new空间的大小为1000,因为1000为具体数值,所以空间复杂度也满足O(1),再遍历数组将数组中的结点链接起来 具体步骤如下:
代码实现
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:32:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |