题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
提交代码:
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<TreeNode> v_in;
vector<int> v_out;
if (root==NULL)
{
return v_out;
}
v_in.push_back(*root);
while (!v_in.empty())
{
TreeNode t1 = v_in.front();
v_in.erase(v_in.begin());
if (t1.left!=NULL)
{
v_in.push_back(*t1.left);
}
if (t1.right != NULL)
{
v_in.push_back(*t1.right);
}
v_out.push_back(t1.val);
}
return v_out;
}
};
测试代码:
int main()
{
Solution* s = new Solution();
TreeNode* t1 = new TreeNode(1);
TreeNode* t2 = new TreeNode(2);
TreeNode* t3 = new TreeNode(3);
TreeNode* t4 = new TreeNode(4);
TreeNode* t5 = new TreeNode(5);
t1->left = t2;
t1->right = t3;
t2->left = t4;
t2->right = t5;
s->PrintFromTopToBottom(t1);
//cout << << endl;
system("pause");
return 0;
}
结果展示: