推广型的网站怎么做,廊坊论坛网站建设,一般网站是用什么框架做的,如何给自己的网站做优化本题是二叉树的层序遍历#xff0c;通过一个队列来控制遍历的节点#xff0c;二叉树每层的节点和上一层入队的节点个数是相同的#xff0c;根据这一点编写循环条件。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* …本题是二叉树的层序遍历通过一个队列来控制遍历的节点二叉树每层的节点和上一层入队的节点个数是相同的根据这一点编写循环条件。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vectorvectorint levelOrder(TreeNode* root) {vectorvectorint result;queueTreeNode* que;if(root ! nullptr){que.push(root);}while(!que.empty()){int size que.size();vectorint vec;for(int i 0; i size; i){TreeNode* cur que.front();que.pop();vec.push_back(cur-val);if(cur-left ! nullptr){que.push(cur-left);}if(cur-right ! nullptr){que.push(cur-right);} }result.push_back(vec);}return result;}
};使用递归的写法层序遍历也是正向进行遍历因此在到达新的一层是首先为返回数组result添加一个容纳这一层元素的空数组之后便可以向这个空数组添加本层的元素添加完后前往这个节点的左右子节点。
class Solution {
public:void order(TreeNode* cur, vectorvectorint result, int depth){if(cur nullptr){return;}if(result.size() depth){result.push_back(vectorint());}result[depth].push_back(cur-val);order(cur-left, result, depth 1);order(cur-right, result, depth 1);}vectorvectorint levelOrder(TreeNode* root) {vectorvectorint result;int depth 0;order(root, result, depth);return result;}
};