1. 程式人生 > >從上往下列印二叉樹

從上往下列印二叉樹

劍指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()處換成列印函式即可。