按层输出二叉树

根据牛客网左成云的算法视频

#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;
          
    }  
  
  
    

猜你喜欢

转载自blog.csdn.net/u012878503/article/details/80158105
今日推荐