分层遍历二叉树
2014-10-11 08:52
274 查看
#include <iostream> #include <string> #include <vector> #include <stack> #include <stdio.h> #include <time.h> using namespace std; struct Node { int data; // 节点中的数据 Node *m_pLeft; Node *m_pRight; }; Node* CreatNode(int value) { Node* pNode = new Node; pNode->data = value; return pNode; } void ConnectNodes(Node* pParent, Node* pLeft, Node* pRight) { if (pParent != nullptr) { pParent->m_pLeft = pLeft; pParent->m_pRight = pRight; } } void PrintNodeByLevel(Node* root) { if (root == nullptr) { return; } vector<Node*> NodeVec; NodeVec.push_back(root); int cur = 0; int last = 1; while (cur < NodeVec.size())//更新cur { last = NodeVec.size();//更新last while (cur < last)//当前层的遍历输出 { cout << NodeVec[cur]->data << " "; if (NodeVec[cur]->m_pLeft) { NodeVec.push_back(NodeVec[cur]->m_pLeft); } if (NodeVec[cur]->m_pRight) { NodeVec.push_back(NodeVec[cur]->m_pRight); } cur++; } cout << endl; } } int main() { // 1 // / \ // 2 3 // / \ \ // 4 5 6 // / \ // 7 8 Node *pNode1 = CreatNode(1); Node *pNode2 = CreatNode(2); Node *pNode3 = CreatNode(3); Node *pNode4 = CreatNode(4); Node *pNode5 = CreatNode(5); Node *pNode6 = CreatNode(6); Node *pNode7 = CreatNode(7); Node *pNode8 = CreatNode(8); ConnectNodes(pNode1, pNode2, pNode3); ConnectNodes(pNode2, pNode4, pNode5); ConnectNodes(pNode5, pNode7, pNode8); ConnectNodes(pNode3, nullptr, pNode6); ConnectNodes(pNode4, nullptr, nullptr); ConnectNodes(pNode6, nullptr, nullptr); ConnectNodes(pNode7, nullptr, nullptr); ConnectNodes(pNode8, nullptr, nullptr); PrintNodeByLevel(pNode1); return 0; }
相关文章推荐
- 算法题18 二叉树的前序、中序、后序、分层遍历
- Binary Tree Level Order Traversal 分层遍历二叉树@LeetCode
- 二叉树的分层遍历的汇总
- android复习路之二叉树层次遍历并且分层
- 关于分层遍历二叉树
- 编程之美——3.9重建二叉树和3.10分层遍历二叉树(Java and C++)
- 九章算法面试题7 分层遍历二叉树
- 编程之美---分层遍历二叉树
- 读书笔记之编程之美 - 3.10 分层遍历二叉树
- [编程之美][3.10] 分层遍历二叉树
- [编程之美3.10]分层遍历二叉树
- 分层遍历二叉树,每层输出为一行
- 每日一题(72) - 分层遍历二叉树
- 二叉树判断(相同、分层遍历、平衡二叉树)
- 面试题_分层遍历二叉树
- 二叉树分层Z字形遍历
- 编程之美--3.10 分层遍历二叉树
- java算法(一)二叉树逐层遍历打印(分层换行)
- 编程之美读书笔记_3.10 分层遍历二叉树
- 编程之美 - 分层遍历二叉树