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