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

 

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

分析:藉助一個隊列,先將根結點的指針入隊列,出來時訪問它,然後將它的左右孩子帶到隊列中(這也是隊列中放的是結點的指針原因,因爲要通過它找到左右孩子),然後只要隊不空,就訪問隊頭結點,帶左右孩子。。。直到隊爲空,說明所有元素訪問完了。

vector<int> PrintFromTopToBottom(TreeNode* root) {
        vector<int> v;
        if(root==nullptr)
            return v;
        
        TreeNode* cur=root;
        queue<TreeNode*> q;
        q.push(cur);
        
        while(!q.empty())
        {
            v.push_back(q.front()->val);//先訪問隊頭元素
        
            //將左右孩子帶進隊列
            if(q.front()->left!=nullptr)
            {
                q.push(q.front()->left);
            }
            if(q.front()->right!=nullptr)
            {
                q.push(q.front()->right);
            }
            
            q.pop();
        }
        
       return v; 
    }

 

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