当前位置: 代码迷 >> 综合 >> LeetCode第102题解析
  详细解决方案

LeetCode第102题解析

热度:30   发布时间:2024-01-31 14:09:01.0

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)

示例:

二叉树:[3,9,20,null,null,15,7],

   3/ \9  20/  \15   7

返回其层次遍历结果:

[[3],[9,20],[15,7]
]

解法一:利用迭代的方式,即BFS

class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> res;queue<TreeNode*> level_node;if(root) level_node.push(root);while(!level_node.empty()) {vector<int> level_node_val;int length = level_node.size();while(length--) {TreeNode* tmp = level_node.front();level_node.pop();level_node_val.push_back(tmp->val);if(tmp->left) level_node.push(tmp->left);if(tmp->right) level_node.push(tmp->right);}res.push_back(level_node_val);}return res;}
};

解法二:利用递归的方式,即DFS,这个判断不太懂哦!

class Solution {
public:vector<vector<int>> res;vector<vector<int>> levelOrder(TreeNode* root) {level_Traversal(root, 0);return res;}void level_Traversal(TreeNode* root, int level) {if(root) {//这个判断不太懂if(res.size() == level) res.resize(level + 1);res[level].push_back(root->val);level_Traversal(root->left, level + 1);level_Traversal(root->right, level + 1);}}
};