1. 程式人生 > >劍指offer 31. 不分行從上往下列印二叉樹

劍指offer 31. 不分行從上往下列印二叉樹

從上往下打印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。

樣例

輸入如下圖所示二叉樹[8, 12, 2, null, null, 6, null, 4, null, null, null]
    8
   / \
  12  2
     /
    6
   /
  4

輸出:[8, 12, 2, 6, 4]

前序,中序,後序都可以看作是DFS,用棧實現,因為他們都是在找到葉子節點前一直遍歷。
層序遍歷屬於BFS,用堆實現,因為它們是一層一層遍歷。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution { public: vector<int> printFromTopToBottom(TreeNode* root) { vector<int> ans; if(root == NULL) return ans; queue<TreeNode*> q; q.push(root); while (!q.empty()) { auto head = q.front(); q.pop(); ans.
push_back(head -> val); if (head -> left) q.push(head -> left); if (head -> right) q.push(head -> right); } return ans; } };