首页 > 其他分享 >代码随想录day15 ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2

代码随想录day15 ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2

时间:2022-10-09 16:45:22浏览次数:79  
标签:node 10 right 随想录 que 二叉树 push root left

102. 二叉树的层序遍历

 1 class Solution {
 2 public:
 3     vector<vector<int>> levelOrder(TreeNode* root) {
 4         //创建一个队列用于存储每一层的结点
 5         queue<TreeNode*> que;
 6         if (root != nullptr) que.push(root);
 7         //创建一个二维数组用于存放遍历结果
 8         vector<vector<int>> result;
 9         while (!que.empty()){
10             //获取一层的结点数量
11             int size = que.size();
12             //用于存放一层的结点的值
13             vector<int> vec;
14             for (int i = 0; i < size; i++){
15                 //取队列中的第一个结点
16                 TreeNode* node = que.front();
17                 //弹出该节点
18                 que.pop();
19                 //将该节点的值存入vec
20                 vec.push_back(node->val);
21                 //将该结点下的两左右节点cun'chu
22                 if (node->left) que.push(node->left);
23                 if (node->right) que.push(node->right);
24             }
25             result.push_back(vec);
26         }
27         return result;
28     }
29 };

107. 二叉树的层序遍历 II

 1 class Solution {
 2 public:
 3     vector<vector<int>> levelOrderBottom(TreeNode* root) {
 4         queue<TreeNode*> que;
 5         if (root != NULL) que.push(root);
 6         vector<vector<int>> result;
 7         while (!que.empty()) {
 8             int size = que.size();
 9             vector<int> vec;
10             // 这里一定要使用固定大小size,不要使用que.size(),因为que.size是不断变化的
11             for (int i = 0; i < size; i++) {
12                 TreeNode* node = que.front();
13                 que.pop();
14                 vec.push_back(node->val);
15                 if (node->left) que.push(node->left);
16                 if (node->right) que.push(node->right);
17             }
18             result.push_back(vec);
19         }
20         reverse(result.begin(), result.end());
21         return result;
22     }
23 };

226. 翻转二叉树

 1 class Solution {
 2 public:
 3     TreeNode* invertTree(TreeNode* root) {
 4         //创建一个队用于存储每一层的结点
 5         queue<TreeNode*> que;
 6         if (root != nullptr) que.push(root);
 7         //当队列非空持续遍历
 8         while (!que.empty()){
 9             //获取每一层的结点数
10             int size = que.size();
11             //遍历每一层的每个节点
12             for (int i = 0; i < size; i++){
13                 //取第一个结点
14                 TreeNode* node = que.front();
15                 //处理完了第一个节点就弹出该节点
16                 que.pop();
17                 swap(node->left, node->right);
18                 if (node->left) que.push(node->left);
19                 if (node->right) que.push(node->right);
20             }
21         }
22         return root;
23     }
24 };

101. 对称二叉树

 1 class Solution {
 2 public:
 3     //核心在于判断左右两个字数能否翻转
 4     bool compare(TreeNode* left, TreeNode* right){
 5         //递归终止的条件
 6         if (left == nullptr && right != nullptr) return false;
 7         else if (left != nullptr && right == nullptr) return false;
 8         else if (left == nullptr && right == nullptr) return true;
 9         else if (left->val != right->val) return false;
10         bool outside = compare(left->left, right->right);
11         bool inside = compare(left->right, right->left);
12         return outside && inside;
13     }
14     bool isSymmetric(TreeNode* root) {
15         if (root == nullptr) return false;
16         return compare(root->left, root->right);
17     }
18 };

标签:node,10,right,随想录,que,二叉树,push,root,left
From: https://www.cnblogs.com/zsqy/p/16772684.html

相关文章

  • P1102 A-B 数对
    A-B数对题目描述给出一串正整数数列以及一个正整数\(C\),要求计算出所有满足\(A-B=C\)的数对的个数(不同位置的数字一样的数对算不同的数对)。输入格式输入共两行......
  • Win10自带的备份工具备份系统
       Windows操作系统经过从win98,win2000,winxp,win7,win8到win10的不断更新和完善,功能已经非常强大、完备了。但伴随着微软把重点转移到云端,对更新维护不再保留专门的......
  • 代码随想录day17 |110. 平衡二叉树 257. 二叉树的所有路径 404. 左叶子之和
    110.平衡二叉树题目|文章思路比较高度适合用后序遍历,前序遍历时间复杂度高。实现点击查看代码classSolution{public:boolisBalanced(TreeNode*root){......
  • CentOS 7.9 安装 django-3.2.10
    一、CentOS7.9安装django-3.2.10地址https://www.djangoproject.comhttps://github.com/django/django二、安装django先得安装pythonpython3python3-Vpip3-......
  • 项目需求|10~15万|自动上料系统—将物料通过机械手臂挂在挂钩上
    项目需求:自动上料系统(将物料通过机械手臂挂在挂钩上)​需求内容:1、利用3D视觉技术(点云配置或其他方法)识别挂钩的空间位置,包含x,y,z坐标。2、利用3D视觉技术识别挂钩姿态,判断挂......
  • Java获取当前系统事件System.currentTimeMillis()方法 ,获取当前时间戳10位 166529114
    Java获取当前系统事件System.currentTimeMillis()方法,获取当前时间戳10位1665291145转为时间字符串yyy-MM-ddSystem.currentTimeMillis()产生一个当前的毫秒,这个毫秒......
  • 2022.10.6 总结
    C有一棵树,每次操作将一个点染成黑色,每次询问查询一个点最近的黑点有多远。有两种暴力:对于一个被修改为黑色的点,\(BFS\)给所有点更新。对于一个所求点,和所有黑色点求......
  • Java 时间字符串转成时间戳 2022-10-08 10:47:08 yyyy-MM-dd HH:mm:ss 1665290918
    Java工具类方法时间字符串转成时间戳2022-10-0810:47:08yyyy-MM-ddHH:mm:ss返回时间戳1665290918publiclonggettimeStemp(Stringtime,Stringformat){ Si......
  • 2022年10月9日有感
      感恩上天赐予我健康的身体,稳定顺利的工作,富足美好的生活,感恩我拥有的一切!  我是宇宙的孩子! 我拥抱宇宙的富足! 我值得宇宙的富足! 财富是一场英雄之旅! ......
  • Windows10内置Linux子系统(WSL)迁移目录
    WSL镜像文件默认安装的时候会安装在C盘,会占用C盘很大的空间。导致C盘吃紧,因此需要迁移到非系统盘。默认位置wsl2中磁盘文件默认位于%UserProfile%\AppData\Local\Packag......