#include<iostream> #include<stdlib.h> #include<cstring> typedef struct node{ char data; struct node*LChild; struct node*RChild; }Tree,*BiTree; BiTree create(char data){ BiTree q; q=(BiTree)malloc(sizeof(Tree)); q->LChild=NULL; q->RChild=NULL; return q; } BiTree TreeBuild(char *preorder,char*inorder,int len){ if(len==0)return NULL; else if(len==1)return create(*preorder); else{ BiTree newnode=create(*preorder); int index=0; for(int i=0;i<len;i++){ if(*(inorder+i)==*(preorder)) index=i; break; } newnode->LChild=TreeBuild(preorder+1,inorder,index); newnode->RChild=TreeBuild(preorder+index+1,inorder+index+1,len-index-1); return newnode; } } void iszhengze(BiTree root,int*a){ if(root){ if(*a==0)return; if((root->LChild==NULL&&root->RChild!=NULL)||(root->LChild!=NULL&&root->RChild==NULL)){ *a=0; } iszhengze(root->LChild,&(*a)); iszhengze(root->RChild,&(*a)); } } int main(){ BiTree root; char pre[100],in[100]; std::cin>>pre; std::cin>>in; int len=strlen(pre); root=TreeBuild(pre,in,len); int a=1; iszhengze(root,&a); if(a==0)std::cout<<"No"; else std::cout<<"Yes"; return 0; }为什么全部输出No
时间: 2024-02-23 12:57:11 浏览: 32
这段代码是为了判断输入的先序遍历和中序遍历是否能够构建出一颗正确的二叉树。但是代码中存在一个问题,就是在查找根节点在中序遍历中的位置时,应该是使用 `*(inorder+i)==*(preorder)` 而不是 `*(inorder+i)==*(preorder)`,即应该使用 `*(inorder+i)==*(preorder)`。因此,您需要将代码中的 `*(preorder)` 改为 `*(preorder+i)`。
相关问题
include<iostream> #include<cstdio> #include<cstdlib> #include<cstring>
这些行是C++编程中常用的头文件引入语句,它们的作用如下:
1. `#include<iostream>`: 这个头文件`<iostream>`包含了输入输出流(Input/Output Stream)的功能,如cin(用于从用户或输入流中读取数据)和cout(用于向输出流(通常是控制台)输出数据)。
2. `#include<cstdio>`: 这个头文件通常被称为stdio.h的C++版本,包含了基本的C风格输入/输出函数,如scanf()和printf(),用于处理文件和标准输入/输出。
3. `#include<cstdlib>`: 这个头文件提供了C语言中的标准库函数,比如malloc()和calloc(),用于动态内存分配,以及exit()函数用于终止程序。
4. `#include<cstring>`: 这个头文件包含了字符串处理相关的函数,如strcpy(), strlen(), 和 strcmp(),用于操作C风格的字符串。
#include <stdlib.h> #include <stdio.h> #include <iostream> #include <string>
#include <stdlib.h> 是C语言标准库中的一个头文件,它提供了一些常用的函数和宏定义,用于处理内存分配、随机数生成、字符串转换等操作。
#include <stdio.h> 是C语言标准库中的另一个头文件,它提供了输入输出相关的函数和宏定义,用于读取和写入数据。
#include <iostream> 是C++标准库中的一个头文件,它包含了C++中输入输出流的定义,提供了cin、cout等对象和相关操作符,用于方便地进行输入输出操作。
#include <string> 是C++标准库中的另一个头文件,它定义了字符串类string及其相关操作,提供了方便的字符串处理功能。
这些头文件是编程中常用的头文件,通过包含它们可以使用其中定义的函数、类和宏等功能来完成相应的操作。
阅读全文