LeetCode--Binary Tree Level Order Traversal
来源:互联网 发布:p2p平台数据分析指标 编辑:程序博客网 时间:2024/05/16 04:11
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 7
return its level order traversal as:
[ [3], [9,20], [15,7]]
方法一:递归。层次遍历,先遍历左节点,再遍历右节点,每一层用一个动态数组存储数据。
/** * 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<vector<int>>result; traverse(root,1,result); return result; } void traverse(TreeNode* root,int level,vector<vector<int>>&result){ if(!root) return; if(level>result.size()){ result.push_back(vector<int>()); } result[level-1].push_back(root->val); traverse(root->left,level+1,result); traverse(root->right,level+1,result); }};
方法二:非递归。用一个current队列,遍历这一层数据,存到动态数组中,再用一个next队列,存储下一层数据,然后交换到current队列,循环进行。
/** * 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<vector<int>>result; queue<TreeNode*>current,next; if(!root) return result; else current.push(root); while(!current.empty()){ vector<int>level; while(!current.empty()){ TreeNode *node=current.front(); current.pop(); level.push_back(node->val); if(node->left) next.push(node->left); if(node->right) next.push(node->right); } result.push_back(level); swap(current,next); } return result; }};
阅读全文
0 0
- LeetCode[Tree]: Binary Tree Level Order Traversal
- *(leetcode) Binary Tree Level Order Traversal (tree)
- [leetcode][tree] Binary Tree Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal
- LeetCode: Binary Tree Zigzag Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal
- [LeetCode]Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- 实现经纬度的转化。逻辑可以使用在Unity中
- ThreadLocal和ConcurrentHashMap的不同,扫盲篇
- PHP使用copy函数复制windows文件时出现failed to open stream: Invalid argument in错误
- Math.random()
- jquery 重命名
- LeetCode--Binary Tree Level Order Traversal
- 匠牛社区AM5728 SDK与交叉编译工具安装
- 根据某表内容更新此表某字段
- C语言字符数组与字符串的使用及加结束符'\0'的问题
- 平面设计师之路1——基础
- JS——坑4
- 安卓设计模式の单例模式
- 搞人工智能必备“数学库”
- 给小米公司的建议