收到二叉树镜像非层序遍历的启发,今天居然无师自通了老是记不住的二叉树层序遍历。
void leveltraver(BitTree &b) {
if (!b)
return;
queue<BitTree> s;
s.push(b);
while (s.size()) {
BitTree p = s.front();
s.pop();
out << p->data << " ";
if (p->left)
s.push(p->left);
if (p->right)
s.push(p->right);
}
}
其原理就是从队列里面取出一个指向某结点的指针,用同样的队列记录左右节点,这样就能按顺序输出节点,在图上看来也就是层序遍历了。