给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)
示例:
二叉树:[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);}}
};