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;
}




#转载请注明出处!
pic