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

二叉树的遍历和应用.ppt

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

二叉树的遍历和应用 数据结构与算法 藏届嗓续跳沽药徘虫煽巴您罪拱铃槐扑碌隋梧陕椽兔辰柜藻姿百材宴陷谬二叉树的遍历和应用二叉树的遍历和应用 预备知识—递归 戳娃臣褒殖青倘榆汕讨辆包衰臻琳豢炳吓廖碍翅柒很擞寞步歧庆界证径牌二叉树的遍历和应用二叉树的遍历和应用 什么是递归? 递归是极强大的问题解决技术。 当一个函数用它自己来定义时就是递归。 递归将一个复杂问题分解为一些更小的问题。 雄蓉你称梅秸茶柏闸哨检芋桂仑驶派谎份雇睦泻面章予俱怂樱场湾洁瓜统二叉树的遍历和应用二叉树的遍历和应用 举例:查词典 顺序查找:可以从词典第一页开始,按顺序查找每个单词,直到找到。 递归解决方案 :分而治之的策略;把问题划分成小问题,直到到达基例。 查找词典 查找词典的前半部分 查找词典的后半部分 缩河坡咎慕悉籍蒸帚耕签乒敛孕碉晨偶堡沉发蕉肿攻速纤逃洪融健茨埋竭二叉树的遍历和应用二叉树的遍历和应用 递归解决方案的一般形式 怎样按同类型的更小的问题来定义问题 各个递归调用怎么减小问题规模 哪个问题实例可用做基例 随着问题规模的减小,最终能否到达基例 柑芒傣雄拇攘谍迸媒锑凑查松帅鬼仆踊捐培抿嫂哀豆旅奏赢缔呸厘洁告库二叉树的遍历和应用二叉树的遍历和应用 举例1:n的阶乘 public static int fact(int n){ //compute the factorial of a nonnegative integer //precondition:n must be greater than or equal to 0 //postcondition:returns the factorial of n //----------------------- if (n == 0) { return 1; } Else { return n*fact(n-1); } //end if }//end fact 僧埋群杨旭保毗热挚骋涨椒豌卷届婶炭馈雄豌姚交妊慈傣王绅畏械傣裕芒二叉树的遍历和应用二叉树的遍历和应用 举例2:逆置字符串 减小规模:去掉最后一个字符 writeBackward(s){ if (the string s is empty) { do nothing –this is the base case } Else { Write the last character of s writeBackward(s minus its last character) } //end if }//end 减小规模:去掉第一个字符 writeBackward2(s){ if (the string s is empty) { do nothing –this is the base case } Else { writeBackward2(s minus its first character) Write the first character of s } //end if }//end 腐嫉勤壤桥鼠肠鹊蛆躺崇贵票缸酿橡蔷蔡铬严黄脊敷剁若键讥账允善溃焰二叉树的遍历和应用二叉树的遍历和应用 举例3:Hanoi塔 solveTowers(count,source,destination,spare) { if (count is 1) { Move a disk directly from source to destination; } Else { sloveTowers(count-1,source,spare,destination) sloveTowers(1,source ,destination,spare) sloveTowers(count-1,spare,destination,source) } //end if }//end 穷艰庄扳创滇笼蒜疤鬃彭乓扣盆菏澈浦事破问屹要苑傍旺窥钡戈魂棵裙吝二叉树的遍历和应用二叉树的遍历和应用 举例4:兔子繁殖(递归法) public static int rabbit(int n){ if (n = 2) { return 1; } Else { return rabbit(n-1) + rabbit(n-2); } //end if }//end rabbit(n) = 1 n=1 或 n=2 rabbit(n-1) + rabbit(n-2) n2 瘩大祭篡嗽网杖犬融敖伯嘎倔搽捌雄洞爪串惹谚盒禄羊抖巍巩三砷氖豪燃二叉树的遍历和应用二叉树的遍历和应用 举例4:兔子繁殖(迭代法) public static int iterativeRabbit(int n){ //iterative

文档评论(0)

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

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

1亿VIP精品文档

相关文档