问题:将二叉树节点按层遍历,每层节点从左至右遍历。
解题思路:利用队列的先进先出特点,从根节点开始遍历。
1)将节点(第一次是根节点)放入队列中;
2) 将该节点的左孩子和右孩子放入到队列中(若左孩子与右孩子均存在);
3)从队列中弹出该节点,接着访问队列中下一个元素的左孩子和右孩子,若存在则加入到队列中;
4)循环1)~3)便可按层从左至右遍历二叉树所有节点。
附加:C++之队列:
存在于C++的<queue>头文件中。
1)定义:queue<int> q;
常用操作:q.empty():如果队列为空返回true,否则返回false
<span style="white-space:pre"> </span> q.size():返回队列中元素的个数
<span style="white-space:pre"> </span> q.pop():删除队列首