前序遍历
//前序遍历非递归
void preOrder(TreeNode *root)
{
if(root == NULL)
{return ;}
stack<TreeNode *> s;
s.push(root);
while(!s.empty())
{
TreeNode *temp = s.top();
cout<<temp->val<<" ";
s.pop();
if(temp->right)
{
s.push(temp->right);
}
if(temp->left)
{
s.push(temp->left);
}
}
}
中序遍历
//中序遍历非递归
void inOrder(TreeNode * root)
{
if(root == NULL)
{return ;}
stack<TreeNode *> s;
TreeNode * temp = root;
while(temp || !s.empty())
{
if(temp)
{
s.push(temp);
temp=temp->left;
}else
{
temp = s.top();
cout<<temp->val<<" ";
s.pop();
temp=temp->right;
}
}
}
后序遍历
//中序遍历非递归
void inOrder(TreeNode * root)
{
if(root == NULL)
{return ;}
stack<TreeNode *> s;
TreeNode * temp = root;
while(temp || !s.empty())
{
if(temp)
{
s.push(temp);
temp=temp->left;
}else
{
temp = s.top();
cout<<temp->val<<" ";
s.pop();
temp=temp->right;
}
}
}