建议使用平台:DEVC++
首先,都是先序遍历创建的二叉树
typedef struct node
{
char data;
node *left;
node *right;
}BT;
void create(BT *&root)
{
BT *p;
p=new node;
cin>>p->data;
if(p->data=='#')
{
root=NULL;
return;
}
root=p;
create(root->left);
create(root->right);
return;
}
#971 求深度,加上求深度部分即可:
int height(BT *&root)
{
if(root==NULL) return 0;
else
return max(height(root->left),height(root->right))+1;
}
#978 中序遍历部分:
void getnode(BT *&root)
{
if(root!=NULL)
{
getnode(root->left); //LDR中序遍历
cout<<root->data;
getnode(root->right);
}
}
#979后序遍历部分:
void getnode(BT *&root)
{
if(root!=NULL)
{
getnode(root->left); //LRD后序遍历
getnode(root->right);
cout<<root->data;
}
}
后序遍历和中序遍历的唯一不同点就是getnode函数里这三行代码的顺序哦,结合书本P116 5.5.1处知识消化吸收!!!!
由此得到这三道题的:
#971求深度(全)
#include<bits/stdc++.h>
using namespace std;
typedef struct node
{
char data;
node *left;
node *right;
}BT;
void create(BT *&root)
{
BT *p;
p=new node;
cin>>p->data;
if(p->data=='#')
{
root=NULL;
return;
}
root=p;
create(root->left);
create(root->right);
return;
}
int height(BT *&root)
{
if(root==NULL) return 0;
else
return max(height(root->left),height(root->right))+1;
}
int main()
{
BT *root;
create(root);
cout<<height(root);
return 0;
}
#978中序遍历(全)
#include<bits/stdc++.h>
using namespace std;
typedef struct node
{
char data;
node *left;
node *right;
}BT;
void create(BT *&root)
{
BT *p;
p=new node;
cin>>p->data;
if(p->data=='#')
{
root=NULL;
return;
}
root=p;
create(root->left);
create(root->right);
return;
}
void getnode(BT *&root)
{
if(root!=NULL)
{
getnode(root->left); //LDR中序遍历
cout<<root->data;
getnode(root->right);
}
}
int main()
{
BT *root;
create(root);
getnode(root);
return 0;
}
#978后序遍历(全)
#include<bits/stdc++.h>
using namespace std;
typedef struct node
{
char data;
node *left;
node *right;
}BT;
void create(BT *&root)
{
BT *p;
p=new node;
cin>>p->data;
if(p->data=='#')
{
root=NULL;
return;
}
root=p;
create(root->left);
create(root->right);
return;
}
void getnode(BT *&root)
{
if(root!=NULL)
{
getnode(root->left); //LRD后序遍历
getnode(root->right);
cout<<root->data;
}
}
int main()
{
BT *root;
create(root);
getnode(root);
return 0;
}