首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

软件工程师面试题精选100题(12)-从下往上遍历二元树

2012-11-04 
程序员面试题精选100题(12)-从上往下遍历二元树题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层

程序员面试题精选100题(12)-从上往下遍历二元树
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入

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

输出8   6   10   5   7   9   11。

思路: 使用入队的操作即可


///////////////////////////////////////////////////////////////////////// Print a binary tree from top level to bottom level// Input: pTreeRoot - the root of binary tree///////////////////////////////////////////////////////////////////////void PrintFromTopToBottom(BTreeNode *pTreeRoot){      if(!pTreeRoot)            return;      // get a empty queue      deque<BTreeNode *> dequeTreeNode;      // insert the root at the tail of queue      dequeTreeNode.push_back(pTreeRoot);      while(dequeTreeNode.size())      {            // get a node from the head of queue            BTreeNode *pNode = dequeTreeNode.front();            dequeTreeNode.pop_front();            // print the node            cout << pNode->m_nValue << ' ';            // print its left child sub-tree if it has            if(pNode->m_pLeft)                  dequeTreeNode.push_back(pNode->m_pLeft);            // print its right child sub-tree if it has            if(pNode->m_pRight)                  dequeTreeNode.push_back(pNode->m_pRight);      }}

热点排行