树形结构最新修改.pptVIP

  • 0
  • 0
  • 约1.4万字
  • 约 96页
  • 2025-07-01 发布于广东
  • 举报

voidinorder(BTNode*root){ BTNode*p,*s[20];inttop=0; p=root; do{ while(p!=NULL) { s[top++]=p; p=p-lchild; } if(top!=0) { p=s[--top]; coutp-data; p=p-rchild; } } while(top!=0||p!=NULL);}第62页,共96页,星期日,2025年,2月5日(2)先序遍历二叉树的非递归算法实现voidpreorder(BTNode*root){BTNode*p,*s[20]; inttop=0;p=root; do{while(p!=NULL){coutp-data;s[top++]=p;p=p-lchild;} if(p==NULLtop!=0) {p=s[--top];p=p-rchild;} }while(top!=0||p!=NULL);}第63页,共96页,星期日,2025年,2月5日(3)后序遍历二叉树的非递归算法voidpostorder(BTNode*root2){ BTNode*p,*s1[20]; ints2[20],top=0,tag; p=root; do { if(p!=NULL){s1[top]=p;s2[top++]=0;p=p-lchild;} 第64页,共96页,星期日,2025年,2月5日else{while(top!=0) {tag=s2[--top];p=s1[top]; if(tag==0) { s1[top]=p; s2[top++]=1; p=p-rchild; break;} elseif(tag==1)coutp-data; } }}while(p!=roottop!=0);}第65页,共96页,星期日,2025年,2月5日7.8哈夫曼树1哈夫曼树的概念BGFCDAE例ABE为结点A到E之间的路径,其路径长度为2,(1)路径长度由树中一个结点到另一个结点的分支构成这两个结点之间的路径,路径上分支的数目称为路径长度。第66页,共96页,星期日,2025年,2月5日树的路径长度=lAD+lAE+lAF+lAG=2+2+2+2=8(2)树的路径长度从根结点到每个结点的路径长度之和。BGFCDAE例第67页,共96页,星期日,2025年,2月5日(3)结点的带权路径长度从根结点到某个结点的路径长度与该结点所带的权值的乘积。结点a的带权路径长度为1×7,结点b的带权路径长度为:2×5第68页,共96页,星期日,2025年,2月5日(b)中遍历二叉树中序遍历二叉树算法思想:若二叉树非空,则:(1)中序遍历左子树(2)访问根结点(3)中序遍历右子树ABDECGF第30页,共96页,星期日,2025年,2月5日voidInOrder(BTNode*b) /*中序遍历的递归算法*/{if(b!=NULL){InOrder(b-lchild); printf(%c,b-data);/*访问根结点*/ InOrder(b-rchild); }}二叉树中序遍历的递归算法实现如下:第31页,共96页,星期日,2025年,2月5日(c)后遍历二叉树后序遍历二叉树算法思想:若二叉树非空,则:(1)后序遍历左子树(2)后序遍历右子树(3)访问根结点ABDECGF第32页,共96页,星期日,2025年,2月5日二叉树后序遍历的递归算法实现如下:voidPostOrder(BTNode*b)/*后序遍历递归算法*/{if(b!=NULL){PostOrder(b-lchild); PostOrder(b-rchild); printf(%c,b-data);/*访问根结点*/ }}第33页,共96页,星期日,2025年,2月5日(d)二叉树的层次遍历从根结点

文档评论(0)

1亿VIP精品文档

相关文档