5.1.4—二叉树的遍历—Binary Tree Level Order Traversal
2017-08-07 21:29
197 查看
描述
Given a binary tree, return the level order traversal of its nodes’ values. (ie, from le to right, level by
level).
For example: Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
Given a binary tree, return the level order traversal of its nodes’ values. (ie, from le to right, level by
level).
For example: Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
#include "BinaryTree.h" #include <stack> #include<queue> #include<vector> using namespace std; //===二叉树的层次遍历 vector<vector<int>> LevelTraversal(BinaryTreeNode *proot) { queue<BinaryTreeNode*>temp; vector<int> tempres;//记录所有数字 vector<int> num;//记录每一层的个数 temp.push(proot); int Initial = 1; num.push_back(Initial); while (!temp.empty()) { int cnt = 0; for (int i = 0; i < Initial; i++) { BinaryTreeNode *p = temp.front(); tempres.push_back(p->m_nValue); temp.pop(); if (p->m_pLeft) { temp.push(p->m_pLeft); cnt++; } if (p->m_pRight) { temp.push(p->m_pRight); cnt++; } } Initial = cnt; if (Initial!=0) num.push_back(Initial); } //==================== vector<vector<int>> res; int cnt = 0; for (int i = 0; i < num.size();i++) { vector<int> cahe; for (int j =cnt; j < cnt+num[i]; j++) cahe.push_back(tempres[j]); cnt += num[i]; res.push_back(cahe); } return res; } // ====================测试代码==================== // 8 // 6 10 // 5 7 9 11 int main() { BinaryTreeNode* pNode8 = CreateBinaryTreeNode(8); BinaryTreeNode* pNode6 = CreateBinaryTreeNode(6); BinaryTreeNode* pNode10 = CreateBinaryTreeNode(10); BinaryTreeNode* pNode5 = CreateBinaryTreeNode(5); BinaryTreeNode* pNode7 = CreateBinaryTreeNode(7); BinaryTreeNode* pNode9 = CreateBinaryTreeNode(9); BinaryTreeNode* pNode11 = CreateBinaryTreeNode(11); ConnectTreeNodes(pNode8, pNode6, pNode10); ConnectTreeNodes(pNode6, pNode5, pNode7); ConnectTreeNodes(pNode10, pNode9, pNode11); //=== //PrintTree(pNode8); //=== vector<vector<int>> res = LevelTraversal(pNode8); for (int i = 0; i < res.size(); i++) { for (int j = 0; j < res[i].size(); j++) cout << res[i][j] << " "; cout << endl; } DestroyTree(pNode8); }
相关文章推荐
- LeetCode(Binary Tree Level Order Traversal, 2,Zigzag)二叉树的层次遍历
- Binary Tree Level Order Traversal 二叉树层次遍历
- Binary Tree Level Order Traversal 二叉树按层遍历
- Binary Tree Level Order Traversal II 二叉树按层遍历(反向输出)@LeetCode
- leetcode 二叉树层次遍历输出Binary Tree Level Order Traversal
- LeetCode 102 Binary Tree Level Order Traversal(二叉树层序遍历)
- 【LeetCode-面试算法经典-Java实现】【103-Binary Tree Zigzag Level Order Traversal(二叉树分层Z字形遍历)】
- Binary Tree Level Order Traversal 二叉树的层序遍历
- 【LeetCode】BinaryTreeLevelOrderTraversal_ii 二叉树的层次遍历 II
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
- LeetCode OJ 之 Binary Tree Level Order Traversal (二叉树的层次遍历)
- leetcode-Binary Tree Level Order Traversal 二叉树层序遍历
- 【LeetCode-面试算法经典-Java实现】【102-Binary Tree Level Order Traversal(二叉树层序遍历)】
- 【遍历二叉树】04二叉树的层次遍历【Binary Tree Level Order Traversal】
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- Binary Tree Level Order Traversal 二叉树的层序遍历
- 【二叉树层次遍历】Binary Tree Level Order Traversal
- 5.1.5—二叉树的遍历—Binary Tree Level Order Traversal II
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- [LeetCode] Binary Tree Level Order Traversal 二叉树层次遍历(DFS | BFS)