读书人

软件工程师面试题精选100题(12)-从下

发布时间: 2012-11-04 10:42:41 作者: rapoo

程序员面试题精选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);      }}

读书人网 >编程

热点推荐