Main.cpp: In function ‘void CreateBiTree(Node*&, char)’: Main.cpp:25:31: error: too few arguments to function ‘void CreateBiTree(Node*&, char)’ CreateBiTree(T->lchild); ^ Main.cpp:16:6: note: declared here void CreateBiTree(BiTree &T,char ch) //Bitree &T:&表示å–地å(C++),也å¯ä»¥å†’作C的指针 Bitree *Tã‚ ^ Main.cpp:26:31: error: too few arguments to function ‘void CreateBiTree(Node*&, char)’ CreateBiTree(T->rchild); //é’å½’ï
大会员可查看代码,点此开通大会员
#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,char ch) //Bitree &T:&表示取地址(C++),也可以写作C的指针 Bitree *T。
//总之T是指向指针BiTree的指针,定义T是因为我们要修改BiTree,通过其指针修改。(?)
{
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;
for (int loc=0;loc<s.size();loc++)
{
char ch=s[loc];
CreateBiTree(T,char ch);
}
InOrderTraverse(T);
cout<<sout<<"\n";
}
return 0;
}