二叉树层次遍历
- 与二叉树先序、中序遍历使用栈类似,二叉树的层次遍历的实现是基于队列这个数据结构来实现的。
- 主要算法思想是首先建一个队列并将树的根节点入队,然后当树不为空的时候持续访问队首节点并将其左右子节点入队,直至队列为空。
void AVLTree<T>::printTree() { //层次遍历
Node<T>* pos = root; //当前位置
queue<Node<T>*> q;
q.push(root); //根节点入队
while (!q.empty()) { //队列非空
Node<T>* node = q.front();
q.pop(); //弹出队首
cout << node->key << '\t';
if (node->lchild != nullptr) { //左孩子非空则入队
q.push(node->lchild);
}
if (node->rchild != nullptr) { //右孩子非空则入队
q.push(node->rchild);
}
}
}