题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解法:将每一层的根节点存储到一个向量里面,从上到下,从左到右,判断是否存完比较有技巧,用到了一个变量num,来记录已经完成存储的个数,同时也用来终止存储的过程。
/*
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> result;
vector<TreeNode*> array; //用来存储根节点
if(root == NULL) return result;
int num = 0;
array.push_back(root);
while(num < array.size()) { //判断是否存储完毕,存储的个数小于节点的个数。
TreeNode *temp = array[num++];
if(temp->left != NULL) array.push_back(temp->left);
if(temp->right != NULL) array.push_back(temp->right);
result.push_back(temp->val);
}
return result;
}
};