题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 核心:利用中序遍历的结果有序的性质,遍历出有序的序列,然后对每个序列将left设置为前一个结点,将right设置为后一个结点 (重点掌握二叉树的遍历递归过程和步骤逻辑) 1 ...
分类:
其他好文 时间:
2018-08-14 14:52:24
阅读次数:
176
二叉树的补充: 线索二叉树: 1.引入线索二叉树 二叉树的遍历实质上是对一个非线性结构实现线性化的过程,使每一个节点(除第一个和最后一个外)在这些线性序列中有且仅有一个直接前驱和直接后继。但在二叉链表存储结构中,只能找到一个节点的左、右孩子信息,而不能直接得到节点在任一遍历序列中的前驱和后继信息。这 ...
分类:
编程语言 时间:
2018-07-27 21:11:08
阅读次数:
160
Morris Traversal 方法实现前序、中序以及后序遍历二叉树。相比使用栈或者递归(也是通过栈空间)方法,Morris 方法可以在空间复杂度为 ,时间复杂度为 的条件下实现对二叉树的遍历。 <! more 前序遍历 1. 如果当前节点左孩子 cur left 为空,输出当前节点 cur 并指 ...
分类:
其他好文 时间:
2018-07-21 22:49:03
阅读次数:
205
树的基础知识 树的定义: 树的基本术语: 二叉树的定义:二叉树是指树的度为2的有序树。左边的为左子树,右边的为右子树。 二叉树常被用于实现二叉查找树和二叉堆。 二叉树的性质: 二叉树的遍历: 二叉树的先序遍历:先遍历根节点,再遍历左子树,再遍历右子树。(第一个是根节点,最后一个所有树的最后一个节点) ...
分类:
其他好文 时间:
2018-07-19 21:19:40
阅读次数:
196
目的 : 加强类与对象的内存分配理解,加强操作能力、理解数据结构。 结构 : 数据元素之间的关系。 数据结构 : 带有结构的数据对象。 线性结构: 各数据元素之间的逻辑以用一个线性序列简单的表达出现。反之为非线性结构。 按逻辑结构分为 : 线性结构与非线性结构。 线性结构包括:线性表-数组(顺序表) ...
分类:
编程语言 时间:
2018-07-11 19:43:15
阅读次数:
116
二叉树的遍历: 前序遍历(递归): LeetCode 144 非递归: 中序遍历(递归):LeetCode 94 非递归: 后序遍历(递归): LeetCode 145 非递归:(大致解析:如果该结点的左右子树都为空或者左右子树中的一个为上一次访问的结点即该结点的右结点已经访问过了,则输出。否则将该 ...
分类:
编程语言 时间:
2018-07-07 15:37:35
阅读次数:
146
二叉树是我们在程序中用的最多的一种树(个人观点)。最简单的一个二叉树是由一个根节点,两个子节点(一左一右成左右孩子节点)组成。二叉树是数组和链表的结合,即包含了数组的快速查找优点,又包含了链表的快速添加删除的优点。熟练掌握二叉树的遍历方法是很有必要的。下面来介绍一下基于二叉树的四种遍历方式。 下面我 ...
分类:
编程语言 时间:
2018-06-26 17:14:23
阅读次数:
182
这篇文章展示了用ruby使用不同的方法对二叉树进行遍,并且实现了不同遍历方式的iterator,希望对大家有所帮助。 Talk is cheap, show me the code! 1. Pre-order Traversal (前序遍历先访问当前的节点,然后再访问它的孩子节点) Non-recu ...
分类:
其他好文 时间:
2018-06-25 11:04:56
阅读次数:
158
首先,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。如图: 每一个根节点最多只有左和右的子节点,在这里,我关注的主要是二叉树的遍历,即先序遍历,中序遍历和后序遍历。 先序遍历可以总结为:根-左-右; 中序遍历可 ...
分类:
其他好文 时间:
2018-06-24 17:04:12
阅读次数:
210