当前位置: 首页 > news >正文

苏州网站建设店铺装修中卫网架钢结构

苏州网站建设店铺装修,中卫网架钢结构,源代码代做网站,网站建设的意义和作用今天来总结下二叉树前序、中序、后序遍历相互求法#xff0c;即如果知道两个的遍历#xff0c;如何求第三种遍历方法#xff0c;比较笨的方法是画出来二叉树#xff0c;然后根据各种遍历不同的特性来求#xff0c;也可以编程求出#xff0c;下面我们分别说明。 首先即如果知道两个的遍历如何求第三种遍历方法比较笨的方法是画出来二叉树然后根据各种遍历不同的特性来求也可以编程求出下面我们分别说明。 首先我们看看前序、中序、后序遍历的特性  前序遍历      1.访问根节点      2.前序遍历左子树      3.前序遍历右子树  中序遍历      1.中序遍历左子树      2.访问根节点      3.中序遍历右子树  后序遍历      1.后序遍历左子树      2.后序遍历右子树      3.访问根节点 一、已知前序、中序遍历求后序遍历 例 前序遍历:         GDAFEMHZ 中序遍历:         ADEFGHMZ 画树求法 第一步根据前序遍历的特点我们知道根结点为G 第二步观察中序遍历ADEFGHMZ。其中root节点G左侧的ADEF必然是root的左子树G右侧的HMZ必然是root的右子树。 第三步观察左子树ADEF左子树的中的根节点必然是大树的root的leftchild。在前序遍历中大树的root的leftchild位于root之后所以左子树的根节点为D。 第四步同样的道理root的右子树节点HMZ中的根节点也可以通过前序遍历求得。在前序遍历中一定是先把root和root的所有左子树节点遍历完之后才会遍历右子树并且遍历的左子树的第一个节点就是左子树的根节点。同理遍历的右子树的第一个节点就是右子树的根节点。 第五步观察发现上面的过程是递归的。先找到当前树的根节点然后划分为左子树右子树然后进入左子树重复上面的过程然后进入右子树重复上面的过程。最后就可以还原一棵树了。该步递归的过程可以简洁表达如下 1 确定根,确定左子树确定右子树。 2 在左子树中递归。 3 在右子树中递归。 4 打印当前根。 那么我们可以画出这个二叉树的形状 那么根据后序的遍历规则我们可以知道后序遍历顺序为AEFDHZMG 编程求法依据上面的思路写递归程序 # include iostream 2 #include fstream 3 #include string 4 5 struct TreeNode 6 { 7 struct TreeNode* left; 8 struct TreeNode* right; 9 char elem; 10 }; 11 12 void BinaryTreeFromOrderings(char* inorder, char* preorder, int length) 13 { 14 if(length 0) 15 { 16 //coutinvalid length; 17 return; 18 } 19 TreeNode* node new TreeNode;//Noice that [new] should be written out. 20 node-elem *preorder; 21 int rootIndex 0; 22 for(;rootIndex length; rootIndex) 23 { 24 if(inorder[rootIndex] *preorder) 25 break; 26 } 27 //Left 28 BinaryTreeFromOrderings(inorder, preorder 1, rootIndex); 29 //Right 30 BinaryTreeFromOrderings(inorder rootIndex 1, preorder rootIndex 1, length - (rootIndex 1)); 31 coutnode-elemendl; 32 return; 33 } 34 35 36 int main(int argc, char* argv[]) 37 { 38 printf(Hello World!\n); 39 char* prGDAFEMHZ; 40 char* inADEFGHMZ; 41 42 BinaryTreeFromOrderings(in, pr, 8); 43 44 printf(\n); 45 return 0; 46 } 输出的结果为AEFDHZMG 二、已知中序和后序遍历求前序遍历 依然是上面的题这次我们只给出中序和后序遍历 中序遍历:       ADEFGHMZ 后序遍历:       AEFDHZMG 画树求法 第一步根据后序遍历的特点我们知道后序遍历最后一个结点即为根结点即根结点为G。 第二步观察中序遍历ADEFGHMZ。其中root节点G左侧的ADEF必然是root的左子树G右侧的HMZ必然是root的右子树。 第三步观察左子树ADEF左子树的中的根节点必然是大树的root的leftchild。在前序遍历中大树的root的leftchild位于root之后所以左子树的根节点为D。 第四步同样的道理root的右子树节点HMZ中的根节点也可以通过前序遍历求得。在前后序遍历中一定是先把root和root的所有左子树节点遍历完之后才会遍历右子树并且遍历的左子树的第一个节点就是左子树的根节点。同理遍历的右子树的第一个节点就是右子树的根节点。 第五步观察发现上面的过程是递归的。先找到当前树的根节点然后划分为左子树右子树然后进入左子树重复上面的过程然后进入右子树重复上面的过程。最后就可以还原一棵树了。该步递归的过程可以简洁表达如下 1 确定根,确定左子树确定右子树。 2 在左子树中递归。 3 在右子树中递归。 4 打印当前根。 这样我们就可以画出二叉树的形状如上图所示这里就不再赘述。 那么前序遍历:         GDAFEMHZ 编程求法并且验证我们的结果是否正确 #include iostream #include fstream #include string struct TreeNode { struct TreeNode* left; struct TreeNode* right; char elem; }; TreeNode* BinaryTreeFromOrderings(char* inorder, char* aftorder, int length) { if(length 0) { return NULL; } TreeNode* node new TreeNode;//Noice that [new] should be written out. node-elem *(aftorderlength-1); std::coutnode-elemstd::endl; int rootIndex 0; for(;rootIndex length; rootIndex)//a variation of the loop { if(inorder[rootIndex] *(aftorderlength-1)) break; } node-left BinaryTreeFromOrderings(inorder, aftorder , rootIndex); node-right BinaryTreeFromOrderings(inorder rootIndex 1, aftorder rootIndex , length - (rootIndex 1)); return node; } int main(int argc, char** argv) { char* afAEFDHZMG; char* inADEFGHMZ; BinaryTreeFromOrderings(in, af, 8); printf(\n); return 0; } 输出结果GDAFEMHZ
http://www.zqtcl.cn/news/432108/

相关文章:

  • .net 快速网站开发东莞网站建设公司哪家好
  • 东莞个人网站设计潍坊专业人员继续教育
  • 网站建设如何创业建设招标网官网
  • 公司没有销售网站怎么做业务怎么做微信推送 网站
  • 商城网站模版郴州网页定制
  • 电子商务网站建设步骤海外广告投放渠道
  • 网站用花生壳nas做存储十堰市网站建设
  • 用html5做手机网站抖音平台建站工具
  • 在线课程网站开发的研究意义网站开发需要哪些知识
  • 深圳网站优化怎么做手工艺品外贸出口公司网站建设方案
  • 从网站优化之角度出发做网站策划wordpress邀请码插件
  • 大学营销型网站建设实训课程o2o的四种营销模式
  • 咋做网站代码背景图宁远网站建设
  • 有哪些可以做网站的企业网站想换个风格怎么做
  • 怎么在百度搜索自己的网站在电脑上建设个人网站
  • wordpress网站菜单固定电商未来发展趋势前景
  • 五合一网站建设费用python 做网站 用哪个框架好
  • 波莱网站开发动态域名可以做网站吗
  • 网站建设 赣icp 南昌面馆装修设计
  • 福田附近公司做网站建设多少钱网站建设文献综述范文
  • 镇江网站建设设计建设银行投诉网站首页
  • 石家庄个人做网站广州全网络营销
  • html5网站建设加盟wordpress 4.8.6
  • 携程网站建设的基本特点哈尔滨做平台网站平台公司
  • 网站建设入门解读国模 wordpress
  • 网站购物车js代码怎么做制作app的软件有哪些
  • 36氪网站用什么程序做的互联网门户网站建设
  • 视频聚合网站怎么做不侵权wordpress 管理员插件
  • 传媒网站后台免费模板网站建设的进度计划
  • 如何做网站排名合肥全网优化