您的位置:首页 > 其它

实现一颗二叉树的层序遍历

2017-07-24 15:25 330 查看
#include<iostream>
#include<queue>
using namespace std;
struct Node
{
Node(int val)
:_left(NULL)
,_right(NULL)
,_val(val)
{}
Node* _left;
Node* _right;
int _val;
};
class BinaryTree
{

public:
BinaryTree()
{}
~BinaryTree()
{}
void SequenceTree(Node* root)
{
if(root==NULL)
return ;
if(root->_left==NULL&&root->_left==NULL)
{
cout<<root->_val<<" ";
return ;
}
queue<Node*> q;
Node* cur=root;
while(cur)
{
cout<<cur->_val<<" ";
if(cur->_left)
q.push(cur->_left);//push左节点进队列
if(cur->_right)     //push右节点进队列
q.push(cur->_right);
cur=q.front();//cur等于队列首节点,pop掉该节点
q.pop();
}

}

private:
Node* root;
};
int main()
{
BinaryTree t;
Node* node1=new Node(1);
Node* node2=new Node(2);
Node* node3=new Node(3);
Node* node4=new Node(4);
Node* node5=new Node(5);
Node* node6=new Node(6);
Node* node7=new Node(7);

node1->_left=node2;
node1->_right=node3;
node2->_left=node4;
node2->_right=node5;
node3->_left=node6;
node3->_right=node7;
t.SequenceTree(node1);
system("pause");
return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐