题目:
本质上就是二叉树的层次遍历(其余的典型遍历方式还有先根遍历、中根遍历、后根遍历)
解法:
类似于图的广度优先搜索,借助于一个队列,先把第一个结点入队,然后不断处理该队列:取出队列的首节点,处理,依次讲该结点的子节点入队。如此循环,即处理完了所有队列。
struct BinaryTreeNode {
int m_nValue;
BinaryTreeNode* m_pLeft;
BinaryTreeNode* m_pRight;
};
void layerTraver(BinaryTreeNode* pRoot) {
if (pRoot == 0) return;
deque<BinaryTreeNode*> d;
d.push_back(pRoot);
while (!d.empty()) {
BinaryTreeNode* pNode = d.front();
d.pop_front();
cout << pNode->m_nValue;
if (pRoot->m_pLeft) {
layerTraver(pRoot->m_pLeft);
}
if (pRoot->m_pRight) {
layerTraver(pRoot->m_pRight);
}
}
}
深入理解C++11 C++11新特性解析与应用下载链接:
https://pan.baidu.com/s/1kMMq-ceUmr4aCugF15RCKg
提取码获取方式:关注下面微信公众号,回复关键字:1149