1 typedef struct node{
2        DataType data;
3        struct node * lchild,*rchild;
4 }BinTNode;//节点类型
5 typedef BinTNode* BinTree;
void PreOrder(BinTree BT){
  stack s;
  BinTree p
=BT; while(p!=NULL||!isEmpty(s))
  
{
    if(p!=null){
      printf("%c",p->data);
      push(s,p);
      p=p->lchild;
    }else{
      p=top(s);
      p=p->rchild;
      pop(s);
    }   } }

基本思想:

(1)当树非空时,将指针p指向根节点,p为当前节点指针。

(2)先访问当前节点p,并将当前节点压入栈s中。

(3)另指针p指向其左孩子。

(4)重复执行步骤(2)(3)直到p为空为止。

(5)从栈s中取出栈顶元素,并将p指向其右孩子,然后释放栈顶元素。

(6)重复执行(2)(3)(4)(5),直到p为空并且栈s为空。

(7)遍历结束。

相关文章:

  • 2021-12-20
  • 2022-12-23
  • 2021-12-03
  • 2021-11-18
  • 2022-01-15
  • 2021-04-27
  • 2021-11-20
猜你喜欢
  • 2022-12-23
  • 2022-03-04
  • 2021-12-10
  • 2021-12-03
  • 2021-11-13
  • 2022-12-23
相关资源
相似解决方案