从上到下打印二叉树——层序遍历二叉树

来源:互联网 发布:和外国人聊天软件 编辑:程序博客网 时间:2024/05/16 07:49

在几次笔试的过程中,都提到了二叉树层序遍历 ,那么我就好好整理下 


题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印


例如输入:

      8
    /  \
   6    10
  /\     /\
 5  7   9  11

输出8   6   10   5   7   9   11。


二叉树节点定义:

struct BinaryTreeNode{    int             m_nValue;    BinaryTreeNode *m_pLeft;    BinaryTreeNode *m_pRight;};

从上到下打印思想:

每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印出来为止。

void PrintTop_to_Bottom(BinaryTreeNode* pRoot){assert(NULL != pRoot);std::queue<BinaryTreeNode* > order;order.push(pRoot);while (!order.empty()){BinaryTreeNode* pnode = order.front();order.pop();cout << pnode->data << " ";if (pnode->pLeft)order.push(pnode->pLeft);if (pnode->pRight)order.push(pnode->pRight);}}

0 0
原创粉丝点击