17_7_21 二叉树的层序遍历

来源:互联网 发布:网络利弊议论文 编辑:程序博客网 时间:2024/06/09 20:20

题目要求:
实现一颗二叉树的层序遍历

难点分析:
没有要求,前序,或者中序、后序等常规一路走到底的遍历。
而是,按行从左到右遍历。第一次遇见,可能有点不适应。
需要想个办法,记录每一行应该走的顺序。
这里写图片描述

思路:
可以利用队列来实现。
1,先将根节点入队列,
2,进入循环,队首结点出队列,输出其值。
3,将其左右孩子节点入队列,
4,进行2-3循环,直到队列为空

实现代码:

template <typename T>void BinaryTree<T>::Level_Order(){    if (m_pRoot)  //m_pRoot为二叉树的根结点    {        //当二叉树不为空时        queue<Node*> q;        q.push(m_pRoot);        while (!q.empty())  //利用队列记录,每一层中,节点遍历的先后顺序        {            Node* pTemp = q.front();            q.pop();            cout << pTemp->m_data << " ";            if (pTemp->m_pLeft)                q.push(pTemp->m_pLeft);            if (pTemp->m_pRight)                q.push(pTemp->m_pRight);        }    }    cout << endl;}
原创粉丝点击