非递归中序遍历

xiaoxiao2021-02-28  117

 void mid2_order (BTreeNode *node) {  if (node == NULL)  {   errno = ERROR;   return;  }  LinkStack *Stack = Create_Stack ();  BTreeNode *tmp = node;   //指向当前节点  while (tmp)  {   Push (Stack,tmp);   if (tmp->lchild)   {    tmp = tmp->lchild;    continue;   }   tmp = tmp->rchild;   while(tmp == NULL && Pop (Stack,&tmp))   {    printf("L",tmp->data);    tmp = tmp->rchild;   }  } } //中序遍历(老师的) void mid1(BTreeNode *root) {  if(root == NULL)   return;    LinkStack *stack =  CreateStack();  BTreeNode* p = root;    while (p != NULL || !StackEmpty(stack))  {   while(p)   {    Push(stack, p);    p = p->lchild;   }      if (!StackEmpty(stack))   {    Pop (stack, &p);    printf ("L", p->data);    p = p->rchild;   }  } }
转载请注明原文地址: https://www.6miu.com/read-25718.html

最新回复(0)