自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 求二叉树指定节点所在层次

int level(bitree t,binode *p){ int d1,d2; if(t==null) return 0; if(t==p) return 1; d1=level(t->lchild,p); d2=level(t->rchild,p); return 1+(d1>d2?d1:d2);}

2017-11-10 16:56:44 13175 10

原创 删除二叉树所有叶节点

需要记录t的父节点void delete(bitree &t,binode *p){//p初始为空 if(t==null) return ; if(t->lchild==null&&t->rchlid==null) {//如果为叶节点 if(p=null) //该树只有根节点 free(t); else { free(t); p->lchild=null; p->

2017-11-10 16:48:41 8040 3

原创 求树的深度

1.以孩子兄弟链表作为存储结构//数据结构typedef struct csnode{ elemtype data; struct csnode *firstchild,*nextsibling;}csnode,*cstree;//算法int depth(cstree t){ csnode *p; int m,d; if(t==null) return 0; p=t->fir

2017-11-10 16:28:30 582 1

原创 二路归并排序及其改进方法

二路归并排序的算法 归并:void merge(elemtype a[],int low,int mid, int high){//mid将a分成左右low-mid,mid+1-high两部分 int i,j,k; elemtype b[high-low+1];//辅助数组b的长度为high-low+1 for(i=low;i=high;i+) b[i]=a[i];//复制a到b i=l

2017-11-05 23:34:55 531

原创 判断满二叉树

判断满二叉树,递归 1.空树,满 2.左满右满,且左右深度相等,满 3.否则,非满bool isfull( bitree t){ if(!t) return true; int ldepth,rdepth; ldepth=depth(t->lchild); rdepth=depth(t->rchild); if(isfull(t->lchild)&&isfull(t->rchild)

2017-11-02 22:02:30 1034 2

原创 二叉树的递归算法应用

1.求叶节点个数(包含于4.) 2.由已知中序、先序序列建树 3.求高度 4.求度为1/2/0的节点个数 5.交换二叉树左右孩子(镜面反射二叉树) 6.查找先序序列中第k个节点 7.根据先序、后序确定满二叉树 8.判断两个二叉树是否相似 9.二叉树线索化 10.在中序线索二叉树里查找指定节点在后序的前驱节点 11.叶节点的带权路径长度之和2.由已知中序、先序序列建树 算法思想:

2017-10-22 15:44:59 677

原创 二叉树的非递归先序、中序、后序遍历

算法思想: 先序:NLR的访问顺序,由于R节点,即右孩子的访问需要通过根节点的指针来实现,所以,需要设一个栈来存储根节点。具体看代码:void preorder(btree t){ initstack(s);//初始化栈 btree p=t; while(p||!empty(s)){ if(p){//如果该节点非空 visit(p);//访问 push(s,p);//入栈,栈中

2017-10-22 14:26:02 193

原创 层序遍历及其应用

层序遍历,利用队列存储下一层的节点,也就是说,队列中最多共存两层的节点。 具体说,根节点入队,出队,将其左右孩子入队。再出队,为根节点的左孩子(如果存在),将其左右孩子入队,再出队,为根节点的右孩子(如果存在)….void levelorder(btree t){ initqueue(Q); btnode *p=t; if(p) enqueue(Q,p);// 根节点入队 while(!e

2017-10-18 23:21:25 757 1

原创 查找二叉树祖先

1.第一种方法:求出所有子列的和,比较for(i=0;i<n;i++)//i是子列左端 for (j=i;j<n;j++){//j是子列右端 //i和j将数列所有的子列都依次表示出来,用k来扫描每个子列 thissum=0;//每次开始扫描之前,先将thissum从零开始 for(k=i;k<=j;k++) thissum+=a[k]; if(

2017-10-18 21:59:46 1640

原创 后序遍历二叉树的非递归算法

算法思路: 1.先访问左子树,再访问右子树,最后访问根节点 2.借助栈来实现非递归—— 1)有左子树的结点入栈 2)没有左子树的结点退栈并访问 3)退栈后栈顶元素就是根节点 4)a.根节点若有右子树,若右孩子未被访问过,右孩子入栈;若右孩子已被访问过,退栈。重复1)-4)。 b.根节点若无右子树,根节点退栈并访问,重复1)-4) 3.用指针r指向刚被访问过的结点,以此判断右孩子是否被

2017-02-26 17:56:08 488

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除