(*)剑指offer 面试题23:从上往下打印二叉树

2016-06-10  本文已影响0人  qmss

题目:
本质上就是二叉树的层次遍历(其余的典型遍历方式还有先根遍历、中根遍历、后根遍历)

解法:
类似于图的广度优先搜索,借助于一个队列,先把第一个结点入队,然后不断处理该队列:取出队列的首节点,处理,依次讲该结点的子节点入队。如此循环,即处理完了所有队列。

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

image
上一篇 下一篇

猜你喜欢

热点阅读