struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x):val(x),left(NULL),right(NULL){}
{
if(!root) return ;
stack<TreeNode*> temp;
while(root || !temp.empty())
{
if(root)
{
cout<<root->val<<" ";
temp.push(root);
root=root->left;
}else
{
TreeNode* node=temp.top();
temp.pop();
root=node->right;
}
}
cout<<endl;
}
void zhongxu_print1(TreeNode* root) // 非递归调用 中序
{
if(!root) return ;
stack<TreeNode*> temp;
while(root || !temp.empty())
{
while(root)
{
temp.push(root);
root=root->left;
}
TreeNode* node=temp.top();
cout<<node->val<<" ";
temp.pop();
root=node->right;
}
cout<<endl;
}
void houxu_print1(TreeNode* root) // 非递归调用 后序
{
if(!root) return ;
stack<TreeNode*> temp;
TreeNode* pre;
temp.push(root);
while(!temp.empty())
{
TreeNode* curr=temp.top();
if((!curr->left && !curr->right) || (pre && (curr->left==pre || curr->right==pre)))
{
cout<<curr->val<<" ";
temp.pop();
pre=curr;
}else
{
if(curr->right)
{
temp.push(curr->right);
}
if(curr->left)
{
temp.push(curr->left);
}
}
}
cout<<endl;
}
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x):val(x),left(NULL),right(NULL){}
};
{
if(!root) return ;
stack<TreeNode*> temp;
while(root || !temp.empty())
{
if(root)
{
cout<<root->val<<" ";
temp.push(root);
root=root->left;
}else
{
TreeNode* node=temp.top();
temp.pop();
root=node->right;
}
}
cout<<endl;
}
void zhongxu_print1(TreeNode* root) // 非递归调用 中序
{
if(!root) return ;
stack<TreeNode*> temp;
while(root || !temp.empty())
{
while(root)
{
temp.push(root);
root=root->left;
}
TreeNode* node=temp.top();
cout<<node->val<<" ";
temp.pop();
root=node->right;
}
cout<<endl;
}
void houxu_print1(TreeNode* root) // 非递归调用 后序
{
if(!root) return ;
stack<TreeNode*> temp;
TreeNode* pre;
temp.push(root);
while(!temp.empty())
{
TreeNode* curr=temp.top();
if((!curr->left && !curr->right) || (pre && (curr->left==pre || curr->right==pre)))
{
cout<<curr->val<<" ";
temp.pop();
pre=curr;
}else
{
if(curr->right)
{
temp.push(curr->right);
}
if(curr->left)
{
temp.push(curr->left);
}
}
}
cout<<endl;
}
本文介绍了二叉树的三种非递归遍历方法:前序遍历、中序遍历和后序遍历,并提供了详细的C++实现代码。

1216

被折叠的 条评论
为什么被折叠?



