1 typedef enum 2 { 3 SubTree, //子树 4 Thread //线索 5 }NodeFlag; 6 7 typedef struct ThreadTree 8 { 9 DATA data; ...
分类:
编程语言 时间:
2015-04-25 22:33:21
阅读次数:
176
当以二叉树作为存储结构时,只能找到节点的左右孩子信息,不能直接得到结点在任一序列中的前驱和后继信息,只有在遍历过程中才能得到这种信息。而我们可以证明:在n个结点的二叉链表中含有n+1个空指针。因为含n个结点的二叉链表中含有2n个指针,除了根结点,每个结点都有一个从父结点指向该结点的指针,因此一共使....
分类:
数据库 时间:
2015-04-15 21:03:46
阅读次数:
234
线索二叉树?什么是线索二叉树呢?一棵二叉树的左右叶子节点,注意是叶子节点,叶子的左结点和右结点一般为空,为了有效地利用其左右结点,我们将左结点指向他的前驱,将右结点指向他的后继!如图:
创建线索二叉树,遍历线索二叉树代码:
#include
#include
typedef char ElemType;
//线索存储标志位
//Link(0) 表示指向左右孩子的指针
//Thread...
分类:
其他好文 时间:
2015-04-14 16:45:13
阅读次数:
146
/* 1.二叉树遍历算法提供了二叉树的一次性遍历,可是二叉树遍历算法无法实现用户程序像分步 遍历单链表那样分步遍历二叉树。线索二叉树就是专门为实现分步遍历二叉树而设计的。线索二叉树能够实现像双向 链表那样,既能够从前向后分步遍历二叉树,又能够从后向前分步遍历二叉树 2.当按某种规则遍历二叉树时,保存...
分类:
其他好文 时间:
2015-02-21 19:58:01
阅读次数:
202
为了学习游戏,决定重学算法,下面是借用的算法目录,来告诉自己要学习的内容,务必完成。算法 3 树 4 遍历二叉树 5 线索二叉树 6 霍夫曼树 7 图 8 深度优先搜索 9 广度优先搜索10 ...
分类:
编程语言 时间:
2015-02-02 17:47:54
阅读次数:
217
线索二叉树:指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树(Threaded Binary Tree)。
线索化:对二叉树以某种次序遍历使其变为线索二叉树称作是线索化。线索化的过程就是在遍历的过程中修改空指针的过程。
代码:
#include "string.h"
#include "stdio.h"
#include "stdlib....
分类:
其他好文 时间:
2015-01-19 21:04:42
阅读次数:
139
根据我自己的理解给代码加了注释。/*中序线索二叉树 2014/11/14 */#include#includetypedef struct BiTrNoDe{ char data; struct BiTrNoDe *lchild; struct BiTrNoDe *rch...
分类:
编程语言 时间:
2014-12-22 15:51:25
阅读次数:
210
一、线索二叉树的原理通过考察各种二叉链表,无论儿叉树的形态怎样,空链域的个数总是多过非空链域的个数。准确的说,n各结点的二叉链表共同拥有2n个链域,非空链域为n-1个,但当中的空链域却有n+1个。例如以下图所看到的。因此,提出了一种方法,利用原来的空链域存放指针,指向树中其它结点。这样的指针称为线索...
分类:
其他好文 时间:
2014-12-19 11:50:24
阅读次数:
228
二叉树的遍历是二叉树中最最基础的部分。这里整理二叉树不用递归实现三种顺序遍历的方式。不用递归的话,一般需要栈来完成。当然线索二叉树(不需要栈或递归)也可以完成中序遍历,这种方式在这篇文章中已经讨论过。这里着重讨论使用栈的实现方式。中序遍历(1) 双while,第二个内层while是为了不断压入lef...
分类:
其他好文 时间:
2014-12-08 02:03:20
阅读次数:
233
线索二叉树
线索二叉树就是在通用的二叉树里多了点东西,多了什么呢? 前驱和后继,把二叉树变成一个链式的结构。解释下:通常我们的二叉树里,叶子节点是没有孩子,所以指向空也就是NULL,在线索二叉树里,叶子节点的左右孩子分别指向它自己的前驱和后继,而前驱和后继是哪个节点呢?
就是树遍历过程的前一个节点和后一个节点。所以第一个遍历的节点是没有前驱的,最后一个节点是没有后继的。这里一般都是中序线...
分类:
编程语言 时间:
2014-11-23 21:41:46
阅读次数:
263