BTNode *CreateBT2 (char post[],char in[], int Ll, int Rl, int L2, int R2) if(L1 > R1) return NULL; BTNode *s = (BTNode *)malloc(sizeof(BTNode)); s->lChild = s->rChild = NULL; s->data = p
后序线索二叉树void postThread(TBTNode *p,TBTNode *&pre) { if(p != NULL) { postThread(p->lChild,pre); postThread(p->rChild, pre); if(p->lChild == NULL) { p->lChild = pre; p->lTag = 1; }
8. 线索二叉树规定:当某结点的左指针为空时,令该指针指向这个线性序列中该结点的前驱结点;当某结点的右指针为空时,令该指针指向这个线性序列中该结点的后继结点,这样的指向该线性序列中的“前驱结点”和“后继结点”的指针称为线索(thread)。创建线索的过程称为线索化。线索化的二叉树称为线索二叉树(threadedbinary-tree)。中序线索二叉树typedef struct TBTNode {
后序遍历非递归化只要在先序的时候把左右子树的位置颠倒一下即为逆后序void postorderNonrecursion(BTNode *bt) { if (bt!=NULL) { BTNode *Stack1[maxSize]; int top1=-1; BTNode *Stack2 [maxSize]; int top2=-1; BTNode *p =NULL; //遍历指针 stackl
对于已经转化成二叉树的树,如果想对其进行先序遍历,只需对这棵树直接进行先序遍历即可对于已经转化成二叉树的树,如果想对其进行中序遍历,只需对这棵树直接进行后序遍历即可6. 二叉树非递归遍历(用栈辅助)先序遍历非递归化用栈,根结点入栈再出栈一个元素,孩子结点入栈(左孩子后入栈)再出栈一个元素,并对该元素的孩子进行入栈操作,没有孩子就出栈,继续判断有无孩子,以此类推首先从根节点开始入栈一个节点然后不停地
二叉树还原为树、森林若某结点是其双亲的左孩子,则把该结点的右孩子、右孩子的右孩子等都与该结点的双亲结点用连线连起来。删除原二叉树中所有双亲结点与右孩子结点之间的连线。整理由前面两步得到的树,即以根结点为轴心,逆时针转动45°,使之结构层次分明。实际上,二叉树的还原就是将二叉树中的左分支保持不变,将二叉树中的右分支还原成兄弟关系。5. 二叉树的遍历(序指的根的顺序)深度优先遍历先序遍历(preord
链式存储结构用data 表示值域,用于存储对应的数据元素,lchild 和 rchild分别表示左指针域和右指针域,分别用于存储左孩子结点和右孩子结点的存储地址。这种链式存储结构通常简称为二叉链(binary linked list)。二叉链中通过根结点指针 b来唯一标识整个存储结构,称为二叉树b。typedef struct BTNode { int data; struct BTNode* l
2. 二叉树的性质性质1:非空二叉树上的叶子结点数等于双分支结点数加1。性质2:非空二叉树的第i层上最多有2的i-1次个结点(i≥1)。性质3:高度为h的二叉树最多有2的h次减1个结点(h≥1)性质4:完全二叉树中层序编号为i的结点(1≤i≤n,n≥1,n为结点数)有以下性质:若 i≤Ln/2 」,即 2i≤n,则编号为i的结点为分支结点,否则为叶子结点。若n为奇数,则每个分支结点都既有左孩子结点
在一棵二叉树中,如果所有分支结点都有左孩子结点和右孩子结点,并且叶子结点都集中在二叉树的最下一层,这样的二叉树称为满二叉树(full binary tree)。用户可以对满二叉树的结点进行层序编号(level coding),约定编号从树根为1开始,按照层数从小到大、同一层从左到右的次序进行,当然也可以从结点个数和树高度之间的关系来定义,即一棵高度为h且有2"-1个结点的二叉树称为满二叉树。非空满
3. 树的性质性质一:树中的结点数等于所有结点的度数之和加1.性质二:性质三:性质四:4. 树的基本运算先根遍历访问根结点;按照从左到右的顺序先根遍历根结点的每一棵子树。后根遍历按照从左到右的顺序后根遍历根结点的每一棵子树;访问根结点。层次遍历从根结点开始按从上到下、从左到右的次序访问树中的每一个结点。5. 树的存储结构双亲存储结构(PTree)顺序存储;求某个结点的双亲结点十分容易,但在求某个结
1. 树的逻辑表示方法树形表示法:使用一棵倒置的树表示树结构,非常直观形象。文氏图表示法:使用集合以及集合的包含关系描述树结构。凹入表示法:使用线段的伸缩关系描述树结构。括号表示法:用一个字符串表示树。2. 树的基本术语结点的度与树的度树中某个结点的子树的个数称为该结点的度(degree of node)。树中所有结点的度中的最大值称为树的度(degree of tree),通常将度为m的树称为m
(五)、广义表的特性广义表中的数据元素是有相对次序的。广义表的长度定义为最外层包含元素的个数。广义表的深度定义为所含括弧的重数,其中原子的深度为0,空表的深度为1。广义表可以共享,一个广义表可以被其他广义表共享,这种共享广义表称为再入表。广义表可以是一个递归的表,一个广义表可以是自己的子表,这种广义表称为递归表。递归表的深度是无穷值,而长度是有限值。表头 (Head) 和表尾 (Tail) :当广
2. 稀疏矩阵当一个阶数较大的矩阵中的非零元素个数s相对于矩阵元素的总个数 t非常小时,即s<<t时,称该矩阵为稀疏矩阵(sparse matrix)。三元组表示法若把稀疏矩阵的三元组线性表按顺序存储结构存储,则称为稀疏矩阵的三元组顺序表简称为三元组表(list of 3-tuples)。(三元组类型TupNode;三元组顺序表的类型TSMatrix)第0行存储非零元素的个数、矩阵行数
(三)、矩阵一般用二维数组 int A[m][n];相同的元素或者零元素在矩阵中的分布存在一定规律的矩阵称之为特殊矩阵,反之称之为稀疏矩阵。1. 特殊矩阵对称矩阵矩阵中的元素满足ai,j= aj,i 的矩阵称之为对称矩阵(矩阵必须是方阵)。用一维数组存储对称矩阵可只存上三角或下三角部分三角矩阵所谓上三角矩阵(upper triangular matrix),是指矩阵的下三角部分中的元素均为常数c的
十一、数组和广义表(一)、数组的基本概念数组除了初始化和销毁以外,在数组中通常只有下面两种操作。读操作:给定一组下标,读取相应的数组元素。写操作:给定一组下标,存储或者修改相应的数组元素。几乎所有的计算机高级语言都实现了数组数据结构,并称之为数组类型。这里以 C/C++语言为例,其中数组数据类型具有以下性质:数组中的数据元素数目固定,一旦定义了一个数组,其数据元素数目不再有增减的变化。数组中的数据
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号