训练营第十三天 | 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

针对二叉树的问题,解题之前一定要想清楚究竟是前中后序遍历,还是层序遍历。

二叉树解题的大忌就是自己稀里糊涂的过了(因为这道题相对简单),但是也不知道自己是怎么遍历的。

226.翻转二叉树

(优先掌握递归)

做题思路:

1)使用前序遍历和后序遍历都可以

2)层序遍历,层数遍历也是可以翻转这棵树的,因为层序遍历也可以把每个节点的左右孩子都翻转一遍

代码细节:

前序遍历

// 前序遍历
class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        stack<TreeNode*> st;
        if (root != NULL) st.push(root);
        while (!st.empty()) {
            TreeNode* node = st.top();
            if (node != NULL) {
                st.pop();
                if (node->right) st.push(node->right);  // 右
                if (node->left) st.push(node->left);    // 左
                st.push(node);                          // 中
                st.push(NULL);
            } else {
                st.pop();
                node = st.top();
                st.pop();
                swap(node->left, node->right);          // 节点处理逻辑
            }
        }
        return root;
    }
};

// 层序遍历
class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        queue<TreeNode*> que;
        if (root != NULL) que.push(root);
        while (!que.empty()) {
            int size = que.size();
            for (int i = 0; i < size; i++) {
                TreeNode* node = que.front();
                que.pop();
                swap(node->left, node->right); // 节点处理
                if (node->left) que.push(node->left);
                if (node->right) que.push(node->right);
            }
        }
        return root;
    }
};

101. 对称二叉树

(优先掌握递归)

做题思路:

代码细节:

104.二叉树的最大深度

(优先掌握递归)

做题思路:

代码细节:

111.二叉树的最小深度

(优先掌握递归)

做题思路:

代码细节:

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 09:36:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 09:36:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 09:36:01       58 阅读
  4. Python语言-面向对象

    2024-07-17 09:36:01       69 阅读

热门阅读

  1. 前端数据加密方式

    2024-07-17 09:36:01       25 阅读
  2. Oracle(2)Oracle数据库的主要组件有哪些?

    2024-07-17 09:36:01       22 阅读
  3. 大语言模型 API

    2024-07-17 09:36:01       24 阅读
  4. 通过手机控制家用电器的一个程序的设计(一)

    2024-07-17 09:36:01       26 阅读
  5. 深度学习中的正则化技术 - 稀疏表示篇

    2024-07-17 09:36:01       27 阅读
  6. CPTAC蛋白数据库在线蛋白分析(癌与癌旁)

    2024-07-17 09:36:01       24 阅读
  7. Shiro 学习总结

    2024-07-17 09:36:01       24 阅读
  8. 面试题 27. 二叉树的镜像

    2024-07-17 09:36:01       30 阅读
  9. 从三个方向来谈谈开源项目有哪些机遇与挑战

    2024-07-17 09:36:01       25 阅读
  10. 告别自动激活:掌握如何在Conda中禁用Base环境

    2024-07-17 09:36:01       29 阅读