面试题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 }