知道二叉树的后序遍历和中序遍历求深度的代码那有错?

问题描述

知道二叉树的后序遍历和中序遍历求深度的代码那有错?

#include
#include
#include
char zhongxu[100];
char houxu[100];
struct node
{
char data;
struct node *l,*r;
}*T,*TT;
int treedepth(struct node *TT)
{
int i,j;
if(!TT) return 0;
i=treedepth(TT->l);
j=treedepth(TT->r);
return i>j?i+1:j+1;
}
struct node * creattree(char *zs,char *hs,int l)
{
//struct node *T;
T=(struct node *)malloc(sizeof(struct node));
if(l==0) return 0;
T->data=hs[l-1];
// printf("%cn",T->data);
int i=0;
for(;i<=l-1;i++)
{
if(zs[i]==hs[l-1]) break;
}
T->l=creattree(zs,hs,i);
T->r=creattree(zs+i+1,hs+i,l-i-1);
return T;

}

int main()
{
int t,len;
scanf("%d",&t);
while(t--)
{
struct node *TT;
scanf("%s%s",zhongxu,houxu);
len=strlen(zhongxu);
TT=creattree(zhongxu,houxu,len);
printf("%dn",treedepth(TT));
zhongxu[0]='';
houxu[0]='';
}
}

解决方案

http://blog.csdn.net/zhaojinjia/article/details/9314989

解决方案二:

代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

时间: 2024-09-14 15:06:51

知道二叉树的后序遍历和中序遍历求深度的代码那有错?的相关文章

二叉树的创建、前序遍历、中序遍历、后序遍历

// BTree.cpp : Defines the entry point for the console application. /* 作者:成晓旭 时间:2001年7月2日(9:00:00-14:00:00) 内容:完成二叉树的创建.前序遍历.中序遍历.后序遍历 时间:2001年7月2日(14:00:00-16:00:00) 内容:完成二叉树的叶子节点访问,交换左.右孩子 */ #include "stdafx.h" #include "stdlib.h"

C++中前序遍历和中序遍历重建二叉树例子

已知某二叉树的前序遍历结果和中序遍历结果,假如前序遍历和中序遍历的结果中都不含重复的数字.例如某个二叉树的前序遍历的序列为{1,2,4,7,3,5,6,8}中序遍历序列{4,7,2,1,5,3,8,6}. 通过前序遍历和中序遍历重建二叉树  struct BinaryTreeNode{  int m_nValue;  BinaryTreeNode* m_pLeft;  BinaryTreeNode* m_pRight; } 先把三种遍历算法写上: // 前序遍历 void preOrder(Bi

Java由先序序列和中序序列还原二叉树

还原本来的二叉树并不是一个非常简单的事,虽然思想比较简单,但过程却是比较繁琐.下面我拿先序序列和中序序列来讲一下原理吧. 从先序序列中我们一下子就可以得到二叉树的根节点是第一个元素,然后再中序序列中我们也可以找到这个元素(假设二叉树中所有的元素的值不相同)这样我们就可以把中序序列分成两部分,前部分和先序序列可求得左子树,后部分与先序序列可求得右子树.下面以左部分为例,在除去根节点的前序序列中的第二个元素,就是我们左子树的的第一个节点,然后继续在中序序列的前部分中找到相同的元素,再次对中序序列进行

在遍历文件中写了显示图片的代码,通过控件做显示循环除了问题,麻烦了

问题描述 在遍历文件中写了显示图片的代码,通过控件做显示循环除了问题,麻烦了 我想循环显示图像,在遍历文件中写了显示图片的代码,通过控件做显示循环,调试没问题,运行的时候出现ASSERT(m_hFile != INVALID_HANDLE_VALUE)这一句,设置断点之后发现if(!file.open)这句有问题,有高手能为我解答一下吗,弄了好久没弄出来,麻烦了 void CbianliDoc::OnOpenfile() { // 判断当前图像是否已经被改动 if (IsModified())

C#如何将一个方法公开出去,先在一个类库中声明生成dll后,在主程序中实现,求如何实现

问题描述 C#如何将一个方法公开出去,先在一个类库中声明生成dll后,在主程序中实现,求如何实现 就是主程序的一个方法 继承类库声明的方法后 通过类库生成的dll公开出去,主程序要如何让实现类库中声明的方法 解决方案 插件引用主程序可以了,也可以做一个公共的dll,插件和主程序都引用它. 在这个dll或者主程序中定义接口或者抽象类,在插件中实现或者继承

采用C#在vs2010编写查询语句如何获取SQLserver2008中的数据,求具体编写代码,急!!

问题描述 解决方案 解决方案二:基础知识解决方案三:自己百度Ado.Net

二叉树前序、中序、后序遍历相互求法

今天来总结下二叉树前序.中序.后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明. 首先,我们看看前序.中序.后序遍历的特性:  前序遍历:      1.访问根节点      2.前序遍历左子树      3.前序遍历右子树  中序遍历:      1.中序遍历左子树      2.访问根节点      3.中序遍历右子树  后序遍历:      1.后序遍历左子树      2.后序遍历右

C++中的树、二叉树、二叉树遍历、二叉树前序、中序、后序遍历相互求法

本博文来总结下树.二叉树以及二叉树前序.中序.后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明. 1.什么是树?什么是二叉树? 树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合. 二叉树是指结点的度不超过2的有序树. (结点的度:树中的一个结点拥有的子树数目.) 2.二叉树的前序.中序.后序遍历的特性  二叉树前序遍历特性:   (1).访问根节点  (2).前序遍

二叉树系列(二):已知中序遍历序列和后序遍历序列,求先序遍历序列

前面已经介绍过三种遍历方法的规则,为了大家看着方便,这里我们在重新介绍一遍:   1.先序遍历   (1)访问根结点:   (2)先序遍历左子树:   (3)先序遍历右子树.   2.中序遍历   (1)中序遍历左子树:   (2)访问根结点:   (3)中序遍历右子树.   3.后序遍历   (1)后序遍历左子树:   (2)后序遍历右子树:   (3)访问根结点.   知道了二叉树的三种遍历规则,只要有中序遍历序列和前后任一种遍历序列,我们就可以求出第三种遍历序列,今天我们研究的是已知中序和