Binary Tree Level Order Traversal(二叉树层序遍历)
来源:互联网 发布:mac 系统架构图 工具 编辑:程序博客网 时间:2024/06/04 19:29
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left 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]]
题目很基础啊,就是给一个二叉树按照层依次输出,思路:满二叉树的子节点个数是父节点的2倍
cpp代码:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { std::vector<TreeNode*> fatherNodes; //存储父节点 std::vector<TreeNode*> childNodes; //存储子节点 std::vector<vector<int>> result; //返回容器 if(!root) return result; //空值返回 //插入根节点的值 std::vector<int> temp; temp.push_back(root->val); result.push_back(temp); fatherNodes.push_back(root); //插入根节点 //循环父节点数组 for (int i = 0; i < fatherNodes.size(); i++) { //将左右子节点插入子节点数组(NULL值也插入) childNodes.push_back(fatherNodes[i]->left); childNodes.push_back(fatherNodes[i]->right); //判断是否满足满二叉树性质(子节点个数是上一次父节点个数的2倍) if(childNodes.size() == 2 * fatherNodes.size()) { //清空父节点数组 fatherNodes.clear(); //准备插入当前层非空子节点 std::vector<int> levelNodeValues; for (int j = 0; j < childNodes.size(); j++) { if(childNodes[j] != NULL) { levelNodeValues.push_back(childNodes[j]->val); fatherNodes.push_back(childNodes[j]); } } //清理子节点数组 childNodes.clear(); //插入容器中 if (levelNodeValues.size()) result.push_back(levelNodeValues); //清理层节点值数组 levelNodeValues.clear(); i = -1; //重新从0开始循环 } } return result; }};
0 0
- LeetCode | Binary Tree Level Order Traversal(二叉树层序遍历)
- Binary Tree Level Order Traversal(二叉树层序遍历)
- 【LeetCode】Binary Tree Level Order Traversal--(二叉树层序遍历)
- leetcode-Binary Tree Level Order Traversal 二叉树层序遍历
- leetcode:Binary Tree Level Order Traversal 二叉树层序遍历
- LeetCode | Binary Tree Level Order Traversal II(二叉树层序遍历II)
- 【LeetCode-面试算法经典-Java实现】【102-Binary Tree Level Order Traversal(二叉树层序遍历)】
- LeetCode 102 Binary Tree Level Order Traversal(二叉树层序遍历)
- LeetCode 103 Binary Tree Zigzag Level Order Traversal(二叉树层序遍历)
- Binary Tree Level Order Traversal 分层遍历二叉树@LeetCode
- 【二叉树层次遍历】Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal, 二叉树层级遍历
- Binary Tree Level Order Traversal 二叉树按层遍历
- Binary Tree Zigzag Level Order Traversal 之字形遍历二叉树
- Leetcode Binary Tree Level Order Traversal 二叉树分层遍历
- [LeetCode]102. Binary Tree Level Order Traversal--二叉树层序遍历1
- [LeetCode]107. Binary Tree Level Order Traversal II--二叉树层序遍历2
- Binary Tree Level Order Traversal II 二叉树层次遍历(广搜,queue)(重重)
- React Native Windows 安装方法
- 图像处理大型科普---上下采样
- 例题4-1 UVa1339 Ancient Cipher
- 计算机网络知识
- LightOJ - 1081 Square Queries(二维RMQ)
- Binary Tree Level Order Traversal(二叉树层序遍历)
- C/C++二维数组的参数传递与二维指针
- MFC 中 Radio Button 使用方法
- B/S架构与C/S架构的区别
- Linux 下 shell 编写 计算器
- SpringMVC使用ResponseBody报406错误
- Cocosd-x设计模式之七:防御式编程模式
- probit模型
- 杭电1418--欧拉定理