第5章_树分析.ppt

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

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * while (ch!=‘\0’ ) { switch(ch) { case ‘(’: top++ ; s[top]=p; k=1; break; case ‘)’: top--; break; case ‘,’: k=2; break; default :p = new BTreeNode; p-data=ch ; p-left=p-right=NULL; if (BT==NULL) BT=p; else { switch (k) { case 1: s[top] -left = p;break; case 2: s[top] - right = p; } } } //switch ins ch; } //while } 练习: 1.试分别画出具有3个结点的树和二叉树的所有不同形态 树: 二叉树: a b e a b c a e h b d c e h f 2.假设二叉树包含的结点数据为1,3,7,2,12,构造完全二叉树,要求每个双亲的值大于子女结点 3.检查二叉树是否为空 bool EmptyBTree (BTreeNode * BT) //判断二叉树是否为空,若是则返回1,否则返回0 { return BT==NULL; } 5.4 二叉树其他运算 4.求二叉树深度 若一棵二叉树为空,则它的深度为0 否则它的深度等于左子树和右子树中的最大深度加1,设depl为左子树的深度,depr为右子树的深度,则二叉树深度为: max(depl,depr)+1 其递归算法如下: int DepthBTree (BTreeNode * BT) //求由BT指针指向的一棵二叉树的深度 { if (BT==NULL) return 0; //对于空树,返回0并结束递归 else { //计算左子树的深度 int dep1=BTreeDepth (BT - left) ; //计算右子树的深度 int dep2=BTreeDepth (BT - right) ; //返回树的深度 if (dep1dep2) return dep1+1; else return dep2+1; } } 3. 从二叉树中查找值为x的结点,若存在则由x带回完整值并返回真,否则返回假 若树为空则返回false结束 若树根结点的值就等于x的值,则把结点值赋给x后并返回true结束 否则先向左子树查找,若找到则返回true结束,否则再向右子树查找,若找到则返回true结束,若左、右子树均未找到则返回false结束。 bool FindBTree(BTreeNode* BT, ElemType x) { if(BT==NULL) return false; //树为空返回假 else { if(BT-data==x)

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档