從上往下列印二叉樹
阿新 • • 發佈:2018-12-20
劍指OFFER題18------按牛客網熱度排序
時間:2018.11.9.2127 作者:Waitt
題目
從上往下打印出二叉樹的每個節點,同層節點從左至右列印。
時間限制:1秒 空間限制:32768K 熱度指數:256131
思路
考點:廣度優先遍歷和深度優先遍歷 這是一道樹的廣度優先遍歷的題
廣搜的套路就是用一個佇列儲存將要搜尋的這一層的元素,然後逐個搜尋; 1、將第一個元素加入佇列 2、佇列不為空時取隊首元素 3、將下一層元素加入隊尾 4、調到第二步,直到佇列為空
藉助一個佇列b,實現二叉樹的層序遍歷
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> a;
queue<TreeNode*> b;
if(root==NULL)
return a;
b.push(root);
while(!b.empty())
{
TreeNode *t=b.front();
a. push_back(t->val);
if(t->left)
b.push(t->left);
if(t->right)
b.push(t->right);
b.pop();
}
return a;
}
};
此處用vector儲存結果,若直接列印,在push_back()處換成列印函式即可。