这道题没啥好说的,就是简单的层序遍历,用一个二维向量存储整个二叉树的元素,二维向量中的每一个一维向量分别存储每一层的元素,我们用一个二重while
循环来实现元素的添加,外层的while
循环来控制添加一维向量,每循环一次就将一层的元素添加到向量中,而内层while
循环则将一层的所有元素都添加到一个临时的一维向量中,内层循环结束后再及时将这个临时向量添加到二维向量中。
下面是代码。
/*** 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:int maxDepth(TreeNode* root) {//这道题用层序遍历,用一个二维向量来存储二叉树的值//所以二维向量中的每一个一维向量存储的是一层的元素//我们只需要统计出二维向量中有多少个一维向量即可vector<vector<int>> result;queue<TreeNode*> My_Queue;if(root) My_Queue.push(root); //若树不为空才加入队列while(!My_Queue.empty()){vector<int> temp;int size = My_Queue.size();while(size > 0){TreeNode* node = My_Queue.front();My_Queue.pop();size--;temp.emplace_back(node -> val);if(node -> left) My_Queue.push(node -> left);if(node -> right) My_Queue.push(node -> right);}result.emplace_back(temp);}return result.size();}
};