递归法创建和遍历二叉树
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
using namespace std;
const int MAX=10;
typedef struct Node
{
string name;
Node* left;
Node* right;
}Node;
Node* tree_c(Node* &node) //创建二叉树
{
node=new Node[256];
char name[128];
scanf("%s",name);
// if(name!="#")
if(strcmp(name,"#")==0)
{
delete[] node;
node=NULL;
}
else
{
node->name=name;
cout<<"---left"<<endl;
tree_c(node->left);
cout<<"---right"<<endl;
tree_c(node->right);
}
return node;
}
void tree_v(Node* node) //遍历二叉树
{
if(node!=NULL)
{
cout<<node->name<<endl;
if(node->left!=NULL)
{
tree_v(node->left);
}
if(node->right!=NULL)
{
tree_v(node->right);
}
}
}
int main()
{
Node* a;
Node* b=tree_c(a);
tree_v(b);
return 0;
}