int a=3; //这里a是一个正常的整型变量 int *p=&a; //单个*的指针进行传参的内容是正常变量的地址 int **q=&p; //多个*的指针须指向指针的地址 //详见图片
先序遍历顺序: DLR
中序遍历顺序: LDR
后序遍历顺序: LRD
一个简易的先序、中序、后序遍历和指针传参的示例:
#include<iostream>
#include<cstring>
using namespace std;
struct BiTree{
BiTree *lchild;
BiTree *rchild;
string data;
};
void preorder(BiTree *Target){
if(Target!=NULL){
cout<<Target->data;
preorder(Target->lchild);
preorder(Target->rchild);
}
}
void inorder(BiTree *Target){
if(Target!=NULL){
inorder(Target->lchild);
cout<<Target->data;
inorder(Target->rchild);
}
}
void postorder(BiTree *Target){
if(Target!=NULL){
postorder(Target->lchild);
postorder(Target->rchild);
cout<<Target->data;
}
}
void createBiTree(BiTree **T){
string Input;
cin>>Input;
if(Input=="#"){
//为空
*T=NULL;
}else{
//不为空
*T = new BiTree;
// *T->lchild=NULL;
// *T->rchild=NULL;
(*T)->data=Input;
createBiTree(&((*T)->lchild));
createBiTree(&((*T)->rchild));
}
}
int main()
{
//write
// BiTree *A = new BiTree;
// A->data="A";
// A->lchild=NULL;
// A->rchild=NULL;
//
// BiTree *B = new BiTree;
// B->data="B";
// A->lchild=B;
// B->lchild=NULL;
// B->rchild=NULL;
//
// BiTree *C = new BiTree;
// C->data="C";
// B->rchild=C;
// C->lchild=NULL;
// C->rchild=NULL;
//
BiTree *T;
createBiTree(&T);
preorder(T); //先序
cout<<endl;
inorder(T); //中序
cout<<endl;
postorder(T); //后序
cout<<endl;
return 0;
}#转载请注明出处!