c_cpp C ++二叉树的三种遍历的.cpp

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp C ++二叉树的三种遍历的.cpp相关的知识,希望对你有一定的参考价值。

/**
二叉树的遍历分为以下三种:

先序遍历:遍历顺序规则为【根左右】

中序遍历:遍历顺序规则为【左根右】

后序遍历:遍历顺序规则为【左右根】

什么是【根左右】?就是先遍历根,再遍历左孩子,最后遍历右孩子;

举个例子,看下图(图从网上找的):

http://blog.csdn.net/soundwave_/article/details/53120766

先序遍历:ABCDEFGHK

中序遍历:BDCAEHGKF

后序遍历:DCBHKGFEA

*/



void TreeTraversePre(TreeNode* root,vector<int> &vec_Result)
{
	if(NULL == root) return;
	
	vec_Result.push_back(root->val);
	
	if(NULL != root->left)
	{
//		vec_Result.push_back(root->left->val);
		TreeTraversePre(root->left, vec_Result);
	}
	
	if(NULL != root->right)
	{
//		vec_Result.push_back(root->right->val);
		TreeTraversePre(root->right, vec_Result);
	}
	
	return;
}

void TreeTraverseMid(TreeNode* root,vector<int> &vec_Result)
{
	if(NULL == root) return;
	
	if(NULL != root->left)
	{
//		vec_Result.push_back(root->left->val);
		TreeTraverseMid(root->left, vec_Result);
	}

	vec_Result.push_back(root->val);

	if(NULL != root->right)
	{
//		vec_Result.push_back(root->right->val);
		TreeTraverseMid(root->right, vec_Result);
	}

	return;
}


void TreeTraverseBeh(TreeNode* root,vector<int> &vec_Result)
{
	if(NULL == root) return;
	
	if(NULL != root->left)
	{
//		vec_Result.push_back(root->left->val);
		TreeTraverseBeh(root->left, vec_Result);
	}

	if(NULL != root->right)
	{
//		vec_Result.push_back(root->right->val);
		TreeTraverseBeh(root->right, vec_Result);
	}
	
	vec_Result.push_back(root->val);

	return;
}

以上是关于c_cpp C ++二叉树的三种遍历的.cpp的主要内容,如果未能解决你的问题,请参考以下文章

求C语言高手! 1:用动画演示二叉树的三种遍历。2:绘制出一个小球,在屏幕左右端之间不停滚动。

c_cpp 二叉搜索树的相关操作(创建,插入节点,前,中,后序递归和非递归遍历二叉树)

二叉树的遍历

二叉树的三种非递归遍历方式(附Cjava源码)

二叉树的三种遍历方式

c_cpp 二叉树的镜像的.cpp