根据牛客网左成云的算法视频
#include<iostream> #include<string> #include<vector> #include<queue> using namespace std; class TreeNode { public: int val; TreeNode *left ; TreeNode *right; TreeNode(int x):val(x),left(NULL),right(NULL) { } } ; int main() { TreeNode t1= TreeNode(1); TreeNode t2= TreeNode(1); TreeNode t3= TreeNode(1); TreeNode t4= TreeNode(1); TreeNode t5= TreeNode(1); TreeNode t6= TreeNode(1); TreeNode t7= TreeNode(1); TreeNode t8= TreeNode(1); t1.left=&t2; t1.right=&t3; t2.left=&t4; t3.left=&t5; t3.right=&t6; t5.left=&t7; t5.right=&t8; //**************************构造二叉树********************************// vector<int> vec; queue <TreeNode*> queue; TreeNode *last=&t1; //当前行的最后节点 TreeNode *nLast=&t1; //下一行的最右节点 queue.push(&t1); while (!queue.empty()) { /*TreeNode out=*queue.front(); cout<<out.val<<" "; queue.pop(); vec.push_back(out.val); */ cout<<queue.front()->val<<' '; if (queue.front()->left) { queue.push(queue.front()->left); nLast=queue.front()->left; } if (queue.front()->right) { queue.push(queue.front()->right); nLast=queue.front()->right; } if (queue.front() == last) { cout<<endl; last=nLast; } queue.pop(); } system("pause"); return 0; }