LeetCode 102. Binary Tree Level Order Traversal
来源:互联网 发布:mac好用的音乐播放器 编辑:程序博客网 时间:2024/06/02 04:01
题目
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,null,null,15,7], 3 / \ 9 20 / \ 15 7return its level order traversal as:[ [3], [9,20], [15,7]]
思考
即树的遍历,加上对层数的标记。
答案
c++
广度优先搜索:把树用vector保存下来,包括NULL,然后根据二叉树的序号规律划分层次存入结果中。
/** * 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) { vector<TreeNode*> temp; temp.push_back(root); for (int i = 0; i < temp.size(); i++) { if (temp[i] != NULL) { temp.push_back(temp[i]->left); temp.push_back(temp[i]->right); } } int currentIndex = 0, level = 0; vector<vector<int>>* result = new vector<vector<int>>; while (currentIndex < temp.size()) { // each level vector<int>* a = new vector<int>; for (int i = 0; i < pow(2, level); i++, currentIndex++) { if (temp[currentIndex] != NULL) { a->push_back(temp[currentIndex]->val); } } if (a->size() != 0) result->push_back(*a); vector<int>().swap(*a); level++; } return *result; }};
深度优先搜索
/** * 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>> ret; void buildVector(TreeNode *root, int depth) { if(root == NULL) return; if(ret.size() == depth) ret.push_back(vector<int>()); ret[depth].push_back(root->val); buildVector(root->left, depth + 1); buildVector(root->right, depth + 1); } vector<vector<int> > levelOrder(TreeNode *root) { buildVector(root, 0); return ret; }};
阅读全文
0 0
- LeetCode 102. Binary Tree Level Order Traversal
- [LeetCode]102.Binary Tree Level Order Traversal
- [Leetcode] 102. Binary Tree Level Order Traversal
- LeetCode --- 102. Binary Tree Level Order Traversal
- [leetcode] 102.Binary Tree Level Order Traversal
- 【leetcode】102. Binary Tree Level Order Traversal
- Leetcode 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal LeetCode
- [leetcode] 102. Binary Tree Level Order Traversal
- Leetcode 102. Binary Tree Level Order Traversal
- LeetCode *** 102. Binary Tree Level Order Traversal
- LeetCode 102. Binary Tree Level Order Traversal
- LeetCode 102. Binary Tree Level Order Traversal
- leetcode-102. Binary Tree Level Order Traversal
- 【leetcode】102. Binary Tree Level Order Traversal
- LeetCode 102. Binary Tree Level Order Traversal
- 【leetcode】102. Binary Tree Level Order Traversal
- LeetCode - 102. Binary Tree Level Order Traversal
- Python中函数的参数定义和可变参数
- win10系统下java9解决javac 不是内部或外部命令的问题
- ios OC版本弹幕碰撞检测
- 游戏编码及过程
- 设计模式C++实现(1)——工厂模式
- LeetCode 102. Binary Tree Level Order Traversal
- 1035题解
- 引用类型参数的传值
- Javascript
- 三级级联菜单
- 虽然不简单但还是要学的JavaWeb—Spring_IOC
- 使用ssh公钥实现免密码登录 (2011-04-22 01:24:10)
- Java集合-ArrayListy(二)
- 环境搭建之window下solr配置