线索二叉树

前序遍历线索化二叉树

女生的网名这么多〃 提交于 2019-11-26 12:44:56
#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 typedef enum PointerTag {Link,Thread}; typedef int Status; typedef struct BiTNode { char data; struct BiTNode *lchild,*rchild; enum PointerTag LTag,RTag; }BiTNode,*BiTree; int CreateBiTree(BiTree *T); Status Visit(char e); Status PreOrderThreadTraverse(BiTree T); Status PreOrderThreadBackTraverse(BiTree T); Status PreOrderThreading(BiTree Thrt,BiTree T); void PreThreading(BiTree p,BiTree *pre); Status PreOrderTraverse(BiTree T); int main() { BiTree *T,Thrt; T=(BiTree*)malloc(sizeof(BiTree)); Thrt=(BiTree)malloc(sizeof(BiTNode)

九、二叉树和霍夫曼树

柔情痞子 提交于 2019-11-26 03:43:04
一、二叉树的深层性质 性质1 在二叉树的第 i层最多有 2^(i-1)个结点 。 (i≥1)  第一层最多有 2-1=1个结点  第二层最多有 2^(2-1)=2个结点  第三层最多有 2^(3-1)=4个结点 性质2 深度为 k 的二叉树最多有 2^k -1个结点 。 (k ≥ 0)  如果有一层 ,最多有 1=2- 1=1 个结点  如果有两层 ,最多有 1+2=2^2- 1=3 个结点  如果有三层 ,最多有 1+2+4=2^3 -1=7个结点 性质3 对任何一棵二叉树 , 如果其叶结点有 n0个 , 度为2的非叶结点有n2个, 有 则有  n0=n2+1 性质4 具有n个结点的完全二叉树的高度为[log2 n]+ 1 。 ([X]表示不大于 X 的最大整数) 性质5 一棵有 n个结点的二叉树 ( 高度为[log2 n]+ 1), 按层次对结点进行编号( 从上到下 , 从左到右 ),对任意结点 i 有 :  如果 i = 1 , 则结点 i 是二叉树的根  如果 i > 1 , 则其双亲结点为 [ i/2]  如果 2i <= n ,则结点 i 的左孩子为 2i  如果 2i > n , 则结点 i 无左孩子  如果 2i+1 <= n ,则结点 i 为 的右孩子为 2i+1  如果 2i+1 > n , 则结点 i无右孩子 二、创建二叉树的方法 指路法定位结点