面试题23:从上往下打印二叉树

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

例如:

   3
   / \
  9  20
    /  \
   15   7
输出:3、9、20、15、7

这道题跟leetcode中的按层序打印有所不同,leetcode中要求每一层输出为一行,而本题中没有此要求,因此简单的多。

 1 void printTreeFromTopToBottom(BinaryTreeNode* root)
 2 {
 3     BinaryTreeNode* p = root;
 4     deque<BinaryTreeNode*>m;
 5     if (p)
 6         m.push_back(p);
 7     while (!m.empty())
 8     {
 9         p = m.front();
10         m.pop_front();
11         cout << p->val ;
12         if (p->left)
13             m.push_back(p->left);
14         if (p->right)
15             m.push_back(p->right);
16     }
17 }

 

posted @ 2015-07-03 14:55  Rosanne  阅读(189)  评论(0编辑  收藏  举报