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

来源:互联网 发布:java前端开发 编辑:程序博客网 时间:2024/06/09 13:42

1.--实现一颗二叉树的层序遍历。

分析如下:

1.如果此二叉树为空直接返回;

2.要想层序遍历二叉树,我们必须要一个容器来保存它的左右孩子节点

3.这个容器必须是先进先出,所以我们选择队列

4.已经遍历过的节点必须从队列中pop出去


代码如下:

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


运行结果:



原创粉丝点击