//非递归先序遍历
void preorderTraverse(TreeNode* root)
{
stack<TreeNode*> Stack;
if(!root)
{
printf("空树!\n");
return;
}
TreeNode* node = root;
while (node || !Stack.empty())
{
while (node)
{
Stack.push(node);
visit(node);
node = node->left;
}
node = Stack.top();
Stack.pop();
node = node->right;
}
}
//非递归中序遍历
void inorderTraverse(TreeNode* root)//非递归中序遍历
{
stack<TreeNode*> Stack;
if(!root)
{
printf("空树!\n");
return;
}
TreeNode* node = root;
while (node || !Stack.empty())
{
while (node)
{
Stack.push(node);
node = node->left;
}
node = Stack.top();
visit(node);
Stack.pop();
node = node->right;
}
}