您的位置:首页 > 其它

非递归遍历 二叉树 前序 中序 后序 通用模板

2014-12-17 19:09 267 查看
stack<TreeNode*> nodes;
stack<bool> states;
LEFT:   if(root)
        {
            // pre order
            nodes.push(root);
            states.push(true);
            root=root->left;
            goto LEFT;
        }
        else
        {
PEEK:	    if( nodes.empty() ) return;

            root=nodes.top();
            bool state=states.top();

            if (state)
            {
                // in order
                states.top()=false;
                root=root->right;
                goto LEFT;
            }
            else
            {
                // post order
                nodes.pop();
                states.pop();
                goto PEEK;				
            }

        }


void Traversal(TreeNode*root)
{
	if(root)
	{
		// pre order
		Traversal(root->left);
		// in order
		Traversal(root->right);
		// post order
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐