求法

君,已阅读到文档的结尾了呢~~
卦身求法,有事求卦,六爻卦身,求卦,小过卦求姻缘,摇卦法,网上求卦,什么是卦身,卦技二十法,求虐身小说,咸卦法
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口推荐这篇日记的豆列更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
使用您的微博帐号登录,即刻尊享微博用户专属服务。
使用您的QQ帐号登录,即刻尊享QQ用户专属服务。
使用您的人人帐号登录,即刻尊享人人用户专属服务。通项公式求法_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
通项公式求法
上传于||文档简介
&&通​项​公​式​求​法
大小:426.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢西西软件下载最安全的下载网站、值得信赖的软件下载站!
→ 二叉树前序、中序、后序遍历相互求法
v1.14 中文绿色版
类型:FTP 工具大小:106KB语言:中文 评分:5.0
今天来总结下二叉树前序、中序、后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明。首先,我们看看前序、中序、后序遍历的特性:&前序遍历:&&&& 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编程求法:(依据上面的思路,写递归程序) 1 #include &iostream&
2 #include &fstream&
3 #include &string&
5 struct TreeNode
struct TreeNode*
struct TreeNode*
12 void BinaryTreeFromOrderings(char* inorder, char* preorder, int length)
if(length == 0)
//cout&&&invalid length&;
TreeNode* node = new TreeN//Noice that [new] should be written out.
node-&elem = *
int rootIndex = 0;
for(;rootIndex & rootIndex++)
if(inorder[rootIndex] == *preorder)
BinaryTreeFromOrderings(inorder, preorder +1, rootIndex);
BinaryTreeFromOrderings(inorder + rootIndex + 1, preorder + rootIndex + 1, length - (rootIndex + 1));
cout&&node-&elem&&
36 int main(int argc, char* argv[])
printf(&Hello World!\n&);
char* pr=&GDAFEMHZ&;
char* in=&ADEFGHMZ&;
BinaryTreeFromOrderings(in, pr, 8);
printf(&\n&);
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*
struct TreeNode*
TreeNode* BinaryTreeFromOrderings(char* inorder, char* aftorder, int length)
if(length == 0)
return NULL;
TreeNode* node = new TreeN//Noice that [new] should be written out.
node-&elem = *(aftorder+length-1);
std::cout&&node-&elem&&std::
int rootIndex = 0;
for(;rootIndex & rootIndex++)//a variation of the loop
if(inorder[rootIndex] ==
*(aftorder+length-1))
node-&left = BinaryTreeFromOrderings(inorder, aftorder , rootIndex);
node-&right = BinaryTreeFromOrderings(inorder + rootIndex + 1, aftorder + rootIndex , length - (rootIndex + 1));
int main(int argc, char** argv)
char* af=&AEFDHZMG&;
char* in=&ADEFGHMZ&;
BinaryTreeFromOrderings(in, af, 8);
printf(&\n&);
}输出结果:GDAFEMHZ
08-2404-0411-0610-1410-1109-2509-2506-0108-0303-20
阅读本文后您有什么感想? 已有23人给出评价!
名称大小下载

参考资料

 

随机推荐