牛客网_剑指offer_从上往下打印二叉树_c++

题目描述

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

解题思路

这道题的思路就是一层一层的处理,只需要定义一个临时的存放TreeNode*的vector即可,然后把root放进去,然后开始循环,把最前面的指针的左右节点push进来,把最前面节点的val给push进res中去,然后删去最前面的指针,一直到最终这个临时的vector为空为止,则完成了一次按顺序来的遍历。
具体代码如下:

/*
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<TreeNode*> temp{};
        vector<int> res{};

        if (root == nullptr) return res;
        temp.push_back(root);
        
        while(!temp.empty())
        {
            auto tmp = temp[0];
            temp.erase(temp.begin());
            res.push_back(tmp->val);
            if (tmp->left) temp.push_back(tmp->left);
            if (tmp->right) temp.push_back(tmp->right);
        }
        
        return res;
    }
};

你可能感兴趣的:(C++,牛客网,剑指offer)