题意:找出“BST”中不符合规律的两个结点。 解题思路: 在这里,我采用的是非递归中序遍历,使用pre记录前驱,tmp记录当前结点。 其实,这个题就是在建立中序线索二叉树。 https://www.cnblogs.com/yy-1046741080/p/11511263.html 对于中序遍历,弹栈 ...
分类:
其他好文 时间:
2019-10-04 15:13:24
阅读次数:
75
线索二叉树利用二叉树空余的指针域,来实现二叉树的链式化。然后,就可以通过前驱,后继像双向链表一样根据某种遍历次序对树的结点进行访问。 数据结构: 建立线索二叉树: 不同的遍历顺序,会得到不同的线索二叉树。 一般使第线索链表的头和尾指向NULL(也可以加入一个头指针) 以中序遍历为例:(对左子树处理, ...
分类:
其他好文 时间:
2019-09-15 11:00:53
阅读次数:
207
二叉树的遍历和线索二叉树 递归遍历 先序遍历 中序遍历 后序遍历 非递归遍历 先序遍历非递归算法 中序遍历非递归算法 后序遍历非递归算法 后序非递归遍历二叉树的顺序是先访问左子树,再访问右子树,最后访问根结点。 当用堆栈来存储结点时,必须分清楚返回根结点时是从左子树返回还是从右子树返回的。 所以,使 ...
分类:
其他好文 时间:
2019-09-12 00:02:17
阅读次数:
100
1.二叉树的根节点,子节点,双亲,祖宗,孩子,层次编号,深度,有关兄弟关系?度为2的树不是二叉树。 二叉树的定义与特征;二叉树的顺序存储和链式存储;二叉树的遍历;线索二叉树的基本概念和构造。 2.倾斜二叉树与完全二叉树 3.前中后序遍历 前根序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树 中根 ...
分类:
其他好文 时间:
2019-08-20 23:57:48
阅读次数:
177
虽说对于二叉树的遍历操作来说非递归法使用用户自定义的栈来代替递归使用时的系统栈,可以得到不小的效率提升,但将二叉树线索化时能将用户栈也省略掉进一步提高了效率。 对于二叉树的链表结构,n个结点的二叉树有n+1个空链域(每个叶节点都有两个空链域),而线索二叉树就把这些空链域有效的利用了起来,在一般的二叉 ...
分类:
其他好文 时间:
2019-08-04 01:06:20
阅读次数:
85
先看一个问题 将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树 问题分析: 线索二叉树基本介绍 1、n个结点的二叉链表中含有n+1 【公式 2n-(n-1)=n+1】 个空指针域。利用二叉链表中的空指针域,存放指向该结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为" ...
分类:
编程语言 时间:
2019-07-16 00:29:37
阅读次数:
354
二叉树的中序遍历,最简单直接的办法当然是递归,但迭代法也可以解决这一问题,一种思路是利用栈,另一种思路是莫里斯遍历,其中使用了线索二叉树这样一种数据结构。 该算法流程如下: Step 1: 将当前节点current初始化为根节点 Step 2: While current不为空, 若current没 ...
分类:
其他好文 时间:
2019-07-02 00:38:13
阅读次数:
132
#include #include//中序建立二叉树 typedef struct node { struct node *left,*right; int data; int rTag,lTag; }BNode; BNode* pre=NULL;//pre总是指向其前一个结点 BNode* Cre... ...
分类:
其他好文 时间:
2019-05-19 21:58:08
阅读次数:
144
概念: 遍历二叉树: 遍历:指按某条搜索路线遍访每个结点且不重复(又称周游)。 遍历的用途:它是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心。 时间效率: O(n) //每个结点最多访问两次 空间效率: O(n) //栈占用的最大辅助空间 用栈进行迭代运算 和队列很像 ...
分类:
其他好文 时间:
2019-05-04 16:13:27
阅读次数:
151