网站大量收购独家精品文档,联系QQ:2885784924

数据结构与算法第六章课后答案第六章 树和二叉树.doc

数据结构与算法第六章课后答案第六章 树和二叉树.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构与算法第六章课后答案第六章 树和二叉树

第6章 树和二叉树(参考答案) 6.1 (1)根结点a 6.2 三个结点的树的形态: 三个结点的二叉树的形态: (2) (3) (1) (1) (2) (4) (5) 6.3 设树的结点数是n,则 n=n0+n1+n2+……+nm+ (1) 设树的分支数为B,有 n=B+1 n=1n1+2n2+……+mnm+1 (2) 由(1)和(2)有: n0=n2+2n3+……+(m-1)nm+1 6.4 (1) ki-1 (i为层数) (2) (n-2)/k+1 (3) (n-1)*k+i+1 (4) (n-1)%k !=0; 其右兄弟的编号 n+1 6.5(1)顺序存储结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A B C D # E F # G # # # # H 注:#为空结点 6.6 (1) 前序 ABDGCEFH (2) 中序 DGBAECHF (3) 后序 GDBEHFCA 6.7 (1) 空二叉树或任何结点均无左子树的非空二叉树 (2) 空二叉树或任何结点均无右子树的非空二叉树 (3) 空二叉树或只有根结点的二叉树 6.8 int height(bitree bt) // bt是以二叉链表为存储结构的二叉树,本算法求二叉树bt的高度 { int bl,br; // 局部变量,分别表示二叉树左、右子树的高度 if (bt==null) return(0); else { bl=height(bt-lchild); br=height(bt-rchild); return(blbr? bl+1: br+1); // 左右子树高度的大者加1(根) } }// 算法结束 6.9 void preorder(cbt[],int n,int i); // cbt是以完全二叉树形式存储的n个结点的二叉树,i是数 // 组下标,初始调用时为1。本算法以非递归形式前序遍历该二叉树 { int i=1,s[],top=0; // s是栈,栈中元素是二叉树结点在cbt中的序号 // top是栈顶指针,栈空时top=0 if (n=0) { printf(“输入错误”);exit(0);} while (i=n ||top0) { while(i=n) {visit(cbt[i]); // 访问根结点 if (2*i+1=n) s[++top]=2*i+1; //若右子树非空,其编号进栈 i=2*i;// 先序访问左子树 } if (top0) i=s[top--]; // 退栈,先序访问右子树 } // END OF while (i=n ||top0) }// 算法结束 //以下是非完全二叉树顺序存储时的递归遍历算法,“虚结点”用‘*’表示 void preorder(bt[],int n,int i); // bt是以完全二叉树形式存储的一维数组,n是数组元素个数。i是数 // 组下标,初始调用时为1。 { if (i=n bt[i]!=’*’) { visit(bt[i]); preorder(bt,n,2*i); preorder(bt,n,2*i+1); }// 算法结束 6.10 int equal(bitree T1,bitree T2); // T1和T2是两棵二叉树,本算法判断T1和T2是否等价 // T1和T2都是空二叉树则等价 // T1和T2只有一棵为空,另一棵非空,则不等价 // T1和T2均非空,且根结点值相等,则比较其左、右子树 {if (T1==null T2==null) return(1); // 同为空二叉树 else if (T1==null || T2==null) return(0); // 只有一棵为空 else if (T1-data!=T2-data) return(0);// 根结点值不等 else return(equal(T1-lchild,T2-lchild)equal(T1-rchild,T2-rchild)) //判左右子树等价 }// 算法结束 6.11 v

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档