- 1、本文档共62页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
******空树高度=-1,树根高度=0**********Log23≈1.58************************************************************************一般取子数组的第一个元素为中轴元素。*******************************4.4二叉树遍历及其相关特性所谓二叉树的遍历指的是遵循某一种次序来访问二叉树上的所有结点,使得树中每一个结点被访问了一次且只访问一次。由于二叉树是一种非线性结构,树中的结点可能有不止一个的直接后继结点,所以遍历以前必须先规定访问的次序。第32页,共62页,5月,星期六,2024年,5月*中序遍历(InorderTraversal)二叉树的中序遍历算法比较简单,使用递归的策略。在遍历以前首先确定遍历的树是否为空,如果为空,则直接返回;否则中序遍历的算法步骤如下:(1)对左子树L执行中序遍历算法(2)访问输出根结点V的值。(3)对右子树R执行中序遍历算法。第33页,共62页,5月,星期六,2024年,5月*前序遍历(PreorderTraversal)有了上面的中序遍历的过程,前序遍历也是类似的。在遍历以前首先确定遍历的树是否为空,如果为空,则直接返回;否则前序遍历的算法步骤如下:(1)访问输出根结点V的值;(2)对左子树L执行前序遍历算法。(3)对右子树R执行前序遍历算法。第34页,共62页,5月,星期六,2024年,5月*前序遍历执行过程图第35页,共62页,5月,星期六,2024年,5月*二叉树的构造第36页,共62页,5月,星期六,2024年,5月*二叉树的高度计算算法Height(T)//输入一棵二叉树T//输出二叉树的高度//二叉树高度定义:叶子到树根的最长路径ifT=φreturn-1elsereturnmax{Height(L),Height(R)}+1例:计算上例中二叉树的高度H(T)=1+max{H(2),H(6)}=2+max{H(3),H(4)}=3+H(5)=5第37页,共62页,5月,星期六,2024年,5月*4.5大整数乘法和Strassen矩阵乘法整数乘法问题:设A和B为两个N位的整数,计算它们的乘积A·B。思考按照通常做法要执行一位乘法多少次?如:234×1251170468+234*****N2次。第38页,共62页,5月,星期六,2024年,5月*分治法如何体现。令N为偶数,则A和B可表示为其中a1和a2分别为A的前半部和后半部。A=a1·10N/2+a2(123456=123·106/2+456)B=bl·10N/2+b2bl和b2则分别为B的前半部和后半部。如果按下述方法得到积(多项式相乘)A·B=(a110n/2+a2)(b110n/2+b2)=a1b110n+(a1b2+a2b1)10n/2+a2b2第39页,共62页,5月,星期六,2024年,5月*A·B=(a110n/2+a2)(b110n/2+b2)=a1b110n+(a1b2+a2b1)10n/2+a2b2估算时间效率是多少(即需要多少次一位乘法)?则要4次N/2位乘法,即N2次一位乘法。因此这种方法没有改进原来的方法。第40页,共62页,5月,星期六,2024年,5月*改进的乘法A·B=(a110n/2+a2)(b110n/2+b2)=a1b110n+(a1b2+a2b1)10n/2+a2b2=a1b110n+[(a1+a2)(b1+b2)-a1b1-a2b2)]10n/2+a2b2此时需要乘法多少次?这种方法需要3次n/2位的乘法及一些加减法。记C(n)为计算两个n位整数相乘所需的基本操作执行次数,则第41页,共62页,5月,星期六,2024年,5月*有C(n)=3C(n/2)+k·nC(1)=1其中,k为常数,KN表示加法、减法所需时间与N成正比。解
文档评论(0)