64,685
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include "iostream"
#include "queue"
#include "windows.h"
using namespace std;
struct TreeNode
{
char data;
TreeNode *leftNode;
TreeNode *rightNode;
};
typedef TreeNode* TreeRoot;
//先序建立
void createTree(TreeRoot *p)
{
char ch;
cout<<"please input a data:"<<endl;
cin>>ch;
if(ch == ';')
{
(*p) = NULL;
return;
}
*p = new TreeNode();
(*p)->data = ch;
createTree(&(*p)->leftNode);
createTree(&(*p)->rightNode);
}
//前序输出,调试用
void showTree(TreeNode *p)
{
if(p != NULL)
{
cout<<p->data<<endl;
showTree(p->leftNode);
showTree(p->rightNode);
}
}
void main()
{
TreeRoot *root = new TreeRoot();
createTree(root);
//showTree(*root);
TreeNode *p;
p = *root;
queue<TreeNode*> q;
q.push(p);
while (p->leftNode != NULL || p->rightNode != NULL)
{
if (q.empty())
{
return;
}
p = q.front();
q.pop();
cout<<p->data<<" ";
if (p->rightNode != NULL)
{
q.push(p->rightNode);
}
if(p->leftNode != NULL)
{
q.push(p->leftNode);
}
}
system("pause");
}
void visit(BT* bt)
{
if(bt->right) visit(bt->right);
if(bt->left) visit(bt->left);
...
}