二叉树的遍历[先序,中序,后序]

先序遍历:(先左后右

先左树再右树遍历

void PreOrderTraverse(BitTree T)
{
	if(T)
	{
		cout<<T->data<<endl;
		PreOrderTraverse(T->left);
		PreOrderTraverse(T->right);
	}
}

 先序遍历很有点类似于栈,可以用栈来模拟:

/*这里的树结点是通过栈来建立的,只用于普通测试*/

void g(TreeNode *root)
{
	TreeNode * stack[MaxSize];
	int top;
	TreeNode *p;
	top=0;
	p=root;
	while(p!=NULL || top>0)
	{
		while(p!=NULL)
		{
			cout<<(*p).val<<endl;
			stack[top++]=p;
			p=(*p).left;
		};
		if(top>0)
		{
			p=stack[--top];
			p=(*p).right;
		}
	}
}

  

中序遍历:

444

后序遍历:

原文地址:https://www.cnblogs.com/tinaluo/p/5233475.html