数据结构
hehainan_86
这个作者很懒,什么都没留下…
展开
-
满二叉树、完全二叉树、最优二叉树(赫夫曼树)、二叉排序树、二叉判定树
1、满二叉树定义:除最后一层的结点外,每一层的所有结点都有两个子结点。另外一个定义:深度为k且有2^k-1个结点的二叉树。 满二叉树是一颗树深度为h,最大层数为k,且深度与最大层数相同,即k=h;它的叶子数是: 2^(h-1)第k层的结点数是: 2^(k-1)总结点数是: 2^k-1 (2的k次方减一)总节点数一定是奇数。 2、完全二叉树 如上图原创 2013-09-10 21:30:32 · 10887 阅读 · 2 评论 -
广度优先搜索二叉树
深度优先搜索二叉树包括递归和非递归的,我的另个一博客里面写的有。这里阐述一下广度优先搜索遍历:其主要思想是采用队列的形式,首先根节点入队,循环判断当前队列非空,访问队列头节点,然后出队列,如果左子树非空,左子树根节点入队;如果右子树非空,右子树根节点入队。 代码如下://广度优先遍历二叉树void Bitree_traverse(Queue *pq, tree p原创 2013-09-13 16:36:15 · 4082 阅读 · 2 评论 -
二叉树的深度优先遍历、广度优先遍历和非递归遍历、图的深度优先和广度优先遍历
二叉树的遍历:D:访问根结点,L:遍历根结点的左子树,R:遍历根结点的右子树。给定一棵二叉树的前序遍历序列和中序遍历序列可以惟一确定一棵二叉树。二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。深度优先遍历二叉树。1. 中序遍历(LDR)的递归算法:若二叉树为空,则算法结束;否则: 中序遍历根结点的左子树; 访问根转载 2013-09-12 10:37:55 · 1182 阅读 · 0 评论 -
二叉树的前序、中序和后序(包括递归和非递归算法)
#include #include #define max_size 10typedef struct Node_t{ int data; struct Node_t* lchild; struct Node_t* rchild;}node,*tree;// 遍历当前结点void visit(tree tr){ printf(" %d ",tr->data);原创 2013-09-11 23:14:23 · 693 阅读 · 0 评论 -
平衡二叉树之一
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。构造与调整方法 平衡二叉树的常用算法有红黑树、AVL、Treap、伸展树等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,可以参考Fibona转载 2013-09-17 09:53:48 · 621 阅读 · 0 评论 -
平衡二叉树之二
原博客地址:http://blogold.chinaunix.net/u3/105029/showart_2320608.html形态匀称的二叉树称为平衡二叉树 (Balanced binary tree) ,其严格定义是: 一棵空树是平衡二叉树;若 T 是一棵非空二叉树,其左、右子树为 TL 和 TR ,令 hl 和 hr 分别为左、右子树的深度。当且仅当 ①TL 、 TR 都转载 2013-09-17 10:11:42 · 539 阅读 · 0 评论 -
prim算法---最小生成树
Prim算法用于求无向图的最小生成树设图G =(V,E),其生成树的顶点集合为U。①、把v0放入U。②、在所有u∈U,v∈V-U的边(u,v)∈E中找一条最小权值的边,加入生成树。③、把②找到的边的v加入U集合。如果U集合已有n个元素,则结束,否则继续执行②。其算法的时间复杂度为O(n^2) Prim算法实现:根据步骤中的指示,我们在编写prim函数时,注意两点:原创 2013-09-27 20:51:08 · 1163 阅读 · 0 评论