二叉树遍历总结 先序、中序、后续、广度、深度

遍历的方式有两种,一种是递归遍历,另外一种是非递归遍历

先序递归

void PreOrder (BitTree T){

  if(T != NULL){

    cout<< T->val << "   ";

    PreOrder (T->left);

    PreOrder (T->right);

  }

}

先序非递归,这里采用栈的数据结构来实现

void PreOrder (BitTree T){

  stack<BitTree>  s;

  BitTree p = T;

  while(p || !s.empty){

    if(p){

      cout<<p->val<<"  ";

      s.push(p);

      p = p->left;

    }else

    {

      p = s.top();

      p = p->right;

      p = p.pop();

    }

  }

}

中序、后续类似

深度优先遍历就是先序遍历

广度优先遍历使用队列结构遍历

posted @ 2019-03-11 11:02  张三编程分享  阅读(371)  评论(0编辑  收藏  举报