C++ 数据结构 (五) 二叉树 (7) 层次遍历

Posted by Oscaner on December 11, 2018

实现

1
2
3
4
5
6
7
8
9
10
11
template <typename T, typename VST>
void BinNode<T>::travLevel(VST &visit) { // 二叉树层次遍历
  Queue<BinNodePosi(T)> Q; // 引入辅助队列
  Q.enqueue(this); // 根节点入队
  while (!Queue.empty()) { // 队列变空之前,反复迭代
    BinNodePosi(T) x = Q.dequeue(); // 取出队首节点,并随即
    visit(x -> data);               // 访问之
    if (HasLChild(*x)) Q.enqueue(x -> lChild); // 左孩子入队
    if (HasRChild(*x)) Q.enqueue(x -> rChild); // 右孩子入队
  }
}

实例

1.png


本文由 Oscaner 创作, 采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外, 均为本站原创或翻译, 转载前请务必署名