liust 提交的代码
提交时间:2022年6月26日 21:39 语言:C++运行时间:0ms占用内存:0K
运行状态: Compilation Error
Main.cpp: In function ‘void CreateBiTree(Node*&)’:
Main.cpp:20:5: error: ‘s’ was not declared in this scope
  if(s[loc]!=NULL){
     ^
Main.cpp: In function ‘void InOrderTraverse(BiTree)’:
Main.cpp:38:26: error: ‘memset’ was not declared in this scope
   memset(sout,0,sout.size);
                          ^
Main.cpp:41:21: error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
   sout.push_back(" ");
                     ^
In file included from /usr/include/c++/5/strin 
题目:二叉树遍历1161

大会员可查看代码,点此开通大会员

                
                    #include <iostream>
#include <string>
#include <algorithm>
using namespace std;
/*定义二叉树的结构*/

typedef struct Node
{
    char data;                    /*数据域*/
    struct Node *lchild, *rchild; /*左子树和右子树*/
} * BiTree, BiNode;
    //实例化BiTree表示指向该结构体的指针(表示一棵树);BiNode是该结构体类型(表示一个指针)。


/*先需创建二叉树*/
void CreateBiTree(BiTree &T) //Bitree &T:&表示取地址(C++),也可以写作C的指针 Bitree *T。
    //总之T是指向指针BiTree的指针,定义T是因为我们要修改BiTree,通过其指针修改。(?)
{
	int loc;
	if(s[loc]!=NULL){
	char ch=s[loc++];
    if (ch == '#')
        T = NULL;
    else
    {
        T = new BiNode; /*创建一个新节点*/   //但是T不是node的指针的指针吗??
        T->data = ch;
        CreateBiTree(T->lchild);
        CreateBiTree(T->rchild);  //递归,输入先序遍历,创建出一个树。(递归!!)
    }
}}
void InOrderTraverse(BiTree T)  //这时T是node的指针。
{
    /*中序遍历*/
    if (T)   //当指针非空,即有子树的时候
    {
		string sout;
		memset(sout,0,sout.size);
        InOrderTraverse(T->lchild);
        sout.push_back(T->data);   
		sout.push_back(" ");
        InOrderTraverse(T->rchild); 
    }
}

int main()
{
	string s;
    while(cin>>s)
	{
	BiTree T;
    CreateBiTree(T);
    InOrderTraverse(T);
	cout<<sout<<"\n";
	}
    return 0;
}