一、标题
二、思路
总结:一般深度遍历用递归,层次遍历用队列辅助:从队首取出一个节点,就将它的左右孩子放到队尾,这样依次进行下去,知道最后一个节点被取出来就完成了一次遍历。
三、代码
/*
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> vNodes;
queue<TreeNode*> qTree;
if(root==NULL) return vNodes;
//创建一个队列,先把根放进去
qTree.push(root);
while(!qTree.empty()){
//循环取出队首元素,每取出一个元素就将值加入数组,并将左右孩子加入队列
TreeNode* node=qTree.front();
vNodes.push_back(node->val);
qTree.pop();
if(node->left!=NULL) qTree.push(node->left);
if(node->right!=NULL) qTree.push(node->right);
}
return vNodes;
}
};