题目来源:牛客网剑指Offer在线编程
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
这道题是上下左右顺序遍历二叉树,用队列可以解决,解题思路如下
首先建立一个复制队列,在队列里加入这个二叉树的根节点,然后进入循环,循环终止的条件是该队列为空。
在循环中,每次取出队列首的元素,将该元素的值加入要返回的vector中,然后弹出队列首的元素,判断该元素的左右子树是否为空,不为空则加入进队列。
代码及注释如下:
class Solution {
private:
queue<TreeNode *> qTree;
vector<int> Tree;
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
if (root == nullptr) return Tree;
qTree.push(root);
while (!qTree.empty()) {
TreeNode *temp = qTree.front();
int tempInt = temp->val;
Tree.push_back(tempInt);
qTree.pop();
if(temp->left!=nullptr)
qTree.push(temp->left);
if(temp->right!=nullptr)
qTree.push(temp->right);
}
return Tree;
}
};