//二叉树的定义
struct node
{
int data; //数据
int layer; //层次
node* lchild;
node* rchild;
};
//二叉树的查找、修改
void search(node* root,int x,int newdata)
{
if(root==NULL) return;
if(root->data==x) root->data=newdata;
search(root->lchild,x,newdata);
search(root->rchild,x,newdata);
}
//中序遍历
void inorder(node* root)
{
if(root==NULL) return ; //到达空树则返回
inorder(root->lchild); //访问左子树
cout<<root->data; //输出根节点
inorder(root->rchild); //访问右子树
}
//先序遍历
void preorder(node* root)
{
if(root==NULL) return;
cout<<root->data;
preorder(root->lchild);
preorder(root->rchild);
}
//后序遍历
void postorder(node* root)
{
if(root==NULL) return;
postorder(root->lchild);
postorder(root->rchild);
cout<<root->data;
}
//层次遍历
void LayerOrder(node* root)
{
queue <node*> q;
root->layer=1;
q.push(root);
while(!q.empty())
{
node* now=q.front();
q.pop();
cout<<now->data;
if(now->lchild)
{
now->lchild->layer=now->layer+1;
q.push(now->lchild);
}
if(now->rchild)
{
now->rchild->layer=now->layer+1;
q.push(now->rchild);
}
}
}