线索二叉树操作 (1) 线索二叉树的表示:将每个节点中为空的做指针与右指针分别用于指针节点的前驱和后续,即可得到线索二叉树. (2) 分类:先序线索二叉树,中序线索二叉树,后续线索二叉树 (3) 增加线索标志域后,二叉链表的结构如下: typedef enum { SubTree, Thread }NodeFlag; //枚举值SubTree(子树)和Thread(线索)分别为0,1 typedef struct ThreadTree //定义线索二叉树结点类型 { DATA data; //…
遍历二叉树是按一定的规则将树中的结点排列成一个线性序列,即是对非线性结构的线性化操作.如何找到遍历过程中动态得到的每个结点的直接前驱和直接后继(第一个和最后一个除外)?如何保存这些信息? 设一棵二叉树有n个结点,则有n-1条边(指针连线) , 而n个结点共有2n个指针域(Lchild和Rchild) ,显然有n+1个空闲指针域未用.则可以利用这些空闲的指针域来存放结点的直接前驱和直接后继信息. 对结点的指针域做如下规定: 1.若结点有左子树,则其leftChild域指示其左孩子,否则令leftC…
在上篇文章中,我们学习了二叉树的基本链式结构以及建树和遍历相关的操作.今天我们学习的则是一些二叉树相关的概念以及二叉树的一种变形形式. 完全二叉树 什么叫完全二叉树呢?在说到完全二叉树之前,我们先说另外一个名词:"满二叉树".像我们之前文章中演示过的那个二叉树,就是一颗"满二叉树".在这颗树中,所有的结点都有两个孩子结点,没有哪个结点是只有一个孩子结点的,并且所有最底层的叶子结点都在同一层,这种树就称为"满二叉树",也称为"完美二叉树&…
//线索二叉树,这里在二叉树的基础上增加了线索化 //杨鑫 #include <stdio.h> #include <stdlib.h> typedef char ElemType; typedef enum {Link,Thread} childTag; //Link表示结点,Thread表示线索 typedef struct bitNode { ElemType data; struct bitNode *lchild, *rchild; int ltag, rtag; } b…
本文根据<大话数据结构>一书,对Java版的二叉树.线索二叉树进行了一定程度的实现. 另: 二叉排序树(二叉搜索树) 平衡二叉树(AVL树) 二叉树的性质 性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1). 性质2:深度为k的二叉树至多有2{k}-1个结点(k≥1). 性质3:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1. 证明提示:分支线总数=n0+n1+n2-1=n1+2×n2 性质4:具有n个节点的完全二叉树的深度为[log2n]+1…
对于任意一棵节点数为 n 的二叉树,NULL 指针的数目为  n+1 , 线索树就是利用这些 "浪费" 了的指针的数据结构. Definition: "A binary tree is threaded by making all right child pointers that would normally be null point to the inorder successor of the node, and all left child pointers tha…
线索二叉树的基本概念 我们按某种方式对二叉树进行遍历,将二叉树中所有节点排序为一个线性序列,在该序列中,除第一个结点外每个结点有且仅有一个直接前驱结点:除最后一个结点外每一个结点有且仅有一个直接后继结点. 在有N个节点的二叉树中需要利用N+1个空指针添加线索,这是因为在N个节点的二叉树中,每个节点有2个指针,所以一共有2N个指针,除了根节点以外,每一个节点都有一个指针从它的父节点指向它,所以一共使用了N-1个指针,所以剩下2N-(N-1)也就是N+1个空指针: 我们利用这些空指针域来存放指向该节…
既上篇关于二叉搜索树的文章后,这篇文章介绍一种针对二叉树的新的中序遍历方式,它的特点是不需要递归或者使用栈,而是纯粹使用循环的方式,完成中序遍历. 线索二叉树介绍 首先我们引入“线索二叉树”的概念: "A binary tree is threaded by making all right child pointers that would normally be null point to the inorder successor of the node, and all left chi…
我们数据结构的课用了这本英文教材,作者是Mark Allen Weiss.总体来说比<算法导论>简单很多,但内容上交集非常大.其实是因为去掉了大多数证明和数学,对于没有耐心看符号和公式的人,显得更友好,更通俗.其中的代码实现很靠谱,照着敲出来基本正确可运行,这点尤其适合入门者. 不过现在读<算法导论>以后,感到还是应该沉下心来和公式.定理神马的打打交道.Mark Allen Weiss这本书确实适合大一和大二的同学看,大三就不适合了. 深深地明白了为什么大神说“算法导论其实很浅显”…
目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 2. 专栏地址 「 刘一哥与GIS的故事 」之<数据结构与算法> 3. 专栏目录 [经典回放]多种语言系列数据结构算法:二叉树(JavaScript版) [经典回放]多种语言系列数据结构算法:二叉树(C#版) [经典回放]多种语言系列数据结构算法:树(C#.JavaScript.VB6版) [经典回放]多种语言系列数据结构线性表之一:顺序表 [经典回放]多种语言系列数据结构线性表之二:链表 [经典回放]多种语言系列数据结构算…