非递归前序遍历二叉树 运行不了

henu_fyh 2016-11-23 10:04:10



#include<iostream>
using namespace std;
# include <stack>

struct trees
{
trees *left;
trees *rignt;
char data;
};


stack<trees> S;

void creat(trees *tree)
{
char c;
cout<<"please input the data : (expect '#')"<<endl;
cin >> c;
if(c=='#')
{
tree = NULL;
return;
}
else
{
tree = new trees;
tree->data=c;
creat(tree->left);
creat(tree->rignt);
}
}

void show1(trees *tree) //前序
{
trees temp;

while (!S.empty()) S.pop();

if(!tree)
{
cout<<"the tree is empty!"<<endl;
}

else
{
while(tree!=NULL||!S.empty())
{
while(tree!=NULL)
{
cout<< tree->data <<endl; //不能正确的打印出来
S.push(*tree);
tree=tree->left;
}
temp = S.top();
S.pop();
tree=temp.rignt;
}
}

}


int main()
{
int leap;

trees tree;

while(cin>>leap)
{
switch(leap)
{
case 1: creat(T);break;
case 2: show1(T);break;

}
}

return 0;
}
...全文
86 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2016-11-24
  • 打赏
  • 举报
回复
case 1: creat(T);break; case 2: show1(T);break; 上面这两句中T你未声明
小灸舞 2016-11-24
  • 打赏
  • 举报
回复
传参应该是&tree吧?

#include<iostream>
using namespace std;
# include <stack>

struct trees
{
	trees *left;
	trees *rignt;
	char data;
};


stack<trees> S;

void creat(trees *tree)
{
	char c;
	cout << "please input the data : (expect '#')" << endl;
	cin >> c;
	if (c == '#')
	{
		tree = NULL;
		return;
	}
	else
	{
		tree = new trees;
		tree->data = c;
		creat(tree->left);
		creat(tree->rignt);
	}
}

void show1(trees *tree) //前序
{
	trees temp;

	while (!S.empty()) S.pop();

	if (!tree)
	{
		cout << "the tree is empty!" << endl;
	}

	else
	{
		while (tree != NULL || !S.empty())
		{
			while (tree != NULL)
			{
				cout << tree->data << endl;           //不能正确的打印出来
				S.push(*tree);
				tree = tree->left;
			}
			temp = S.top();
			S.pop();
			tree = temp.rignt;
		}
	}

}


int main()
{
	int leap;

	trees tree;

	while (cin >> leap)
	{
		switch (leap)
		{
		case 1: creat(&tree); break;
		case 2: show1(&tree); break;

		}
	}

	return 0;
}

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧