您的位置:首页 > 其它

第四十三题(递归和非递归俩种方法实现二叉树的前序遍历)

2014-07-10 13:41 453 查看
43.递归和非递归俩种方法实现二叉树的前序遍历

代码:

namespace MS100P_43
{
	struct TreeNode
	{
		int data;
		TreeNode *left;
		TreeNode *right;
	};
	void preOrderTranverse_recursive(TreeNode* root)
	{
		if (root == NULL)	return;
		cout << root->data << ' ';
		preOrderTranverse_recursive(root->left);
		preOrderTranverse_recursive(root->right);
	}
	void preOrderTranverse_nonRecursive(TreeNode* root)
	{
		if (root == NULL)	return;
		stack<TreeNode*> s;
		while (root != NULL || !s.empty())
		{
			while (root != NULL)
			{
				cout << root->data << ' ';
				s.push(root);
				root = root->left;
			}
			if (!s.empty())
			{
				root = s.top();
				root = root->right;
				s.pop();
			}
		}
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: