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

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
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值