void pre_order_1(node *h)
{
//模拟路径
//bj为第几次访问
stack<node*> st;
h->bj = 0;
st.push(h);
while(!st.empty())
{
node *no;
no = st.top();
if(no == NULL)
{
st.pop();
no = st.top();
}
if(no->bj == 0)
{
printf("%d ",no->n);
no->bj = 1;
no = no->left;
if(no != NULL)
no->bj = 0;
st.push(no);
}
else if(no->bj == 1)
{
no->bj = 2;
no = no->right;
if(no != NULL)
no->bj = 0;
st.push(no);
}
else if(no->bj == 2)
{
st.pop();
}
}
}
二叉树先序遍历(非递归)
最新推荐文章于 2022-07-28 17:26:01 发布