剑指 Offer 32 - III. 从上到下打印二叉树 III(中等,层序遍历)

简介: 剑指 Offer 32 - III. 从上到下打印二叉树 III(中等,层序遍历)

题目链接:剑指 Offer 32 - III. 从上到下打印二叉树 III


题目基础:剑指 Offer 32 - II. 从上到下打印二叉树 II



该题与上一题相比,多了个偶数层反转,所以我们只需要在上一题的代码上加上这一个功能


class Solution {
public:
  vector<vector<int>> levelOrder(TreeNode* root) {
    vector<vector<int>> v;
    if (root == nullptr) return v;
    queue<TreeNode*> q;
    q.push(root);
    int current_level = 1;   //记录当前是第几层
    while (!q.empty()) {
      int current_level_size = q.size();
      v.push_back(vector<int>());
      for (int i = 1; i <= current_level_size; i++) {
        auto node = q.front();
        q.pop();
        v.back().push_back(node->val);
        if (node->left) q.push(node->left);
        if (node->right) q.push(node->right);
      }
      if (current_level % 2 == 0) reverse(v.back().begin(), v.back().end());  //实现偶数层反转
      current_level++;
    }
    //加一段代码,实现对应层反转   可以把这段代码优化到上面代码中
    //int i = 1;
    //for (auto& ceng : v) {
    //  if (i % 2 == 0) reverse(ceng.begin(), ceng.end());
    //  i++;
    //}
    return v;
  }
};
目录
相关文章
|
10月前
剑指 Offer 34:二叉树中和为某一值的路径
剑指 Offer 34:二叉树中和为某一值的路径
43 0
|
10月前
剑指 Offer 32:从上到下打印二叉树
剑指 Offer 32:从上到下打印二叉树
52 0
|
10月前
leetcode 剑指 Offer 32 - III. 从上到下打印二叉树 III
leetcode 剑指 Offer 32 - III. 从上到下打印二叉树 III
60 0
|
10月前
/leetcode 剑指 Offer 32 - I. 从上到下打印二叉树
/leetcode 剑指 Offer 32 - I. 从上到下打印二叉树
48 0
|
10月前
leetcode 剑指 Offer 32 - II. 从上到下打印二叉树 II
leetcode 剑指 Offer 32 - II. 从上到下打印二叉树 II
89 0
|
存储 C语言
力扣 - 102、二叉树的层序遍历(剑指Offer - 面试题32:从上到下打印二叉树)
力扣 - 102、二叉树的层序遍历(剑指Offer - 面试题32:从上到下打印二叉树)
87 1
力扣 剑指 Offer 32 - III. 从上到下打印二叉树 III
力扣 剑指 Offer 32 - III. 从上到下打印二叉树 III
63 0
力扣 剑指 Offer 32 - II. 从上到下打印二叉树 II
力扣 剑指 Offer 32 - II. 从上到下打印二叉树 II
73 0
力扣 剑指 Offer 32 - I. 从上到下打印二叉树
力扣 剑指 Offer 32 - I. 从上到下打印二叉树
68 0
|
算法
图解LeetCode——剑指 Offer 32 - III. 从上到下打印二叉树 III
图解LeetCode——剑指 Offer 32 - III. 从上到下打印二叉树 III
94 0