/* 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> a; queue<TreeNode *> tree; if(root==NULL)return a; TreeNode* r; tree.push(root); while(tree.size()){ r=tree.front(); a.push_back(r->val); if(r->left!=NULL){ tree.push(r->left); } if(r->right!=NULL){ tree.push(r->right); } tree.pop(); } return a; } };
思路是:將這個樹的根結點放到隊列中,然后出隊列,將其左孩子和右孩子分別放到隊列中,然后再重復這樣的工作,每出隊列一個,就將這個隊列的左孩子和右孩子進隊列。依次循環。直到遍歷完所有的結點。