劍指offer之二叉樹的層次遍歷

題目:從上往下打印出二叉樹的每個節點,同層節點從左至右打印。

解題思路:創建一個隊列,先將二叉樹的根節點放入隊列中,然後開始循環,只要隊列不爲空,獲取隊列的第一個元素,將其保存爲一個節點tmp,,接着將其push_back到新數組裏面,然後判斷其左孩子是否爲空,若其不爲空,將其push到隊列中,然後再繼續判斷其右孩子是否爲空,若不爲空,將其push到隊列中,然後將tmp結點pop.依次循環就完成了二叉樹的層次遍歷。

代碼實現如下:

/*
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) 
    {
        if(root == NULL) 
        	return arr;
        	
        vector<int>  arr;
        queue<TreeNode*> q;
        TreeNode* tmp;
         	
        q.push(root);
        while(!q.empty())
        {
       	 	tmp = q.front();
        	que.push_back(tmp->val);
        
        	if(tmp->left != NULL)
           		q.push(tmp->left);
        	if(tmp->right != NULL)
            	q.push(tmp->right);
            
        	q.pop();
        }
       return arr;
    }
};

測試結果就不測試了,牛客網已近測試過了!有興趣的可以測一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章