102. 二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
/** * 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 = {}; vector<int> level; if(root == NULL) return result; queue<TreeNode*> Q; TreeNode *current = root; Q.push(root); int i, len; while(!Q.empty()) { level = {}; len = Q.size();//记录当前层有多少元素(遍历当前层,再添加下一层) for(i = 0; i < len; i++) { current = Q.front(); Q.pop(); level.push_back(current->val); if(current->left) Q.push(current->left); if(current->right) Q.push(current->right); } result.push_back(level); } return result; } };
107. 二叉树的层次遍历 II
/** * 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>> levelOrderBottom(TreeNode* root) { vector<vector<int>> result = {}; vector<int> level; if(!root) return result; queue<TreeNode*> Q; Q.push(root); TreeNode* current; int i, len; while(!Q.empty()) { level = {}; len = Q.size(); for(i = 0; i<len; i++) { current = Q.front(); Q.pop(); level.push_back(current->val); if(current->left) Q.push(current->left); if(current->right)Q.push(current->right); } result.push_back(level); }
//reverse(result.begin(), result.end());//反转队列 //return result;
}
};
原文:https://www.cnblogs.com/jessica216/p/13424024.html