当以二叉树作为存储结构时,只能找到节点的左右孩子信息,不能直接得到结点在任一序列中的前驱和后继信息,只有在遍历过程中才能得到这种信息。我们知道,在n个结点的二叉链表栈必定存在n+1个空链域,因此,可以利用这些空链域来存放这些结点信息。所以作如下规定:若结点右左..
分类:
编程语言 时间:
2016-05-06 19:43:52
阅读次数:
284
二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的..
分类:
其他好文 时间:
2016-05-05 17:48:45
阅读次数:
233
为什么会有线索化二叉树呢?二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。为了保存这种在遍历中需要的信息,我们..
分类:
其他好文 时间:
2016-05-05 07:16:07
阅读次数:
199
二叉树的线索化,这几天以来我很难掌握,今天终于想通了,哈哈,首先我们来看看二叉树线索化之后会变成什么样子,这里我们以图中的二叉树为例,图如下:画的太糙,各位看官讲究着看吧--。所谓二叉树的线索化,就是当一个节点的左右指针为空时,就让它的左右指针指向该节点的前..
分类:
编程语言 时间:
2016-05-01 17:51:32
阅读次数:
208
二叉树的遍历运算是将二叉树中节点按一定规律线性化的过程,当二叉链表作为存储结构时,只能找到节点的左、右孩子信息,而不能直接得到节点在遍历序列中的前驱和后继信息。线索化二叉树能够解决这样的问题,将二叉链表中的空指针域填上相应节点的遍历前驱或后继节点的地址,而..
分类:
其他好文 时间:
2016-04-27 22:51:44
阅读次数:
353
#define_CRT_SECURE_NO_WARNINGS1
#include<iostream>
usingnamespacestd;
enumPointerTag{THREAD,LINK};//枚举
前言:为了遍历的方便,我们在二叉树中引入前驱和后序,这样就储存了相关信息。
其结构如下:template<classT>
structBinaryTreeThdNode
{
T_data;..
分类:
其他好文 时间:
2016-04-27 07:09:56
阅读次数:
132
节点:
enumLinkType
{
THREAD,
LINK
};
template<classT>
structThredBinaryNode
{
ThredBinaryNode*_left;
ThredBinaryNode*_right;
LinkType_left_tag;
LinkType_right_tag;
T_data;
ThredBinaryNode(Tdata):_data(data),_left(NULL),_right(NULL),_left_tag(LINK),..
分类:
其他好文 时间:
2016-04-26 16:07:58
阅读次数:
225
二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的..
分类:
其他好文 时间:
2016-04-23 07:52:08
阅读次数:
2235
#include using namespace std; typedef enum { LINK, THREAD }PointerTag; template struct BinaryTreeNodeThd { T _data; BinaryTreeNodeThd* _left; BinaryTr ...
分类:
其他好文 时间:
2016-04-20 21:47:42
阅读次数:
179
这个弄了好久,最主要理解中序遍历各节点的lchild指向左孩子还是前驱 和rchild指向右孩子还是后继, 还有线索化前的初始化和线索好之后的初始化(不知道这么说对不对,毕竟初学), 可以看看小甲鱼的视频,讲解的很不错, 上代码,前序输入就行,看代码自行了解输入规则, ...
分类:
其他好文 时间:
2016-04-19 17:04:46
阅读次数:
159