首页 > 其他分享 >DAY12 二叉树part02

DAY12 二叉树part02

时间:2024-07-30 17:06:59浏览次数:24  
标签:right TreeNode int part02 nullptr 二叉树 DAY12 root left

 

今日任务

二叉树的对称性

翻转二叉树

二叉树的最大/小深度(递归法)

226.翻转二叉树 (优先掌握递归)

题目链接/文章讲解/视频讲解:https://programmercarl.com/0226.%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.html

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 8  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 9  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10  * };
11  */
12 class Solution {
13 public:
14     TreeNode* invertTree(TreeNode* root) {
15         if(root==nullptr) return root;
16         swap(root->left,root->right);
17         invertTree(root->left);
18         invertTree(root->right);
19         return root;
20     }
21 };

101. 对称二叉树 (优先掌握递归)

题目链接/文章讲解/视频讲解:https://programmercarl.com/0101.%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.html

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 8  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 9  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10  * };
11  */
12 class Solution {
13 public:
14     bool isSymmetric(TreeNode* root) {
15             if(root==nullptr) return true;
16             else return comtree(root->left,root->right);
17     }
18     bool comtree(TreeNode* right,TreeNode* left)
19     {
20         if(right==nullptr&&left==nullptr) return true;
21         else if(right!=nullptr&&left==nullptr) return false;
22         else if(right==nullptr&&left!=nullptr) return false;
23         else if(right->val!=left->val) return false;
24         else return comtree(left->right,right->left)&&comtree(left->left,right->right);
25     }
26 };

104.二叉树的最大深度 (优先掌握递归)

题目链接/文章讲解/视频讲解: https://programmercarl.com/0104.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.html

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 8  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 9  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10  * };
11  */
12 class Solution {
13 public:
14     int maxDepth(TreeNode* root) {
15           if(root==nullptr) return 0;
16           int leftd=maxDepth(root->left);
17           int rightd=maxDepth(root->right);
18           int depth=1+max(leftd,rightd);
19           return depth;
20     }
21 };

111.二叉树的最小深度 (优先掌握递归)

题目链接/文章讲解/视频讲解:https://programmercarl.com/0111.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.html

 1 class Solution {
 2 public:
 3     int minDepth(TreeNode* root) {
 4         if(root==NULL) return 0;
 5         int leftd=minDepth(root->left);
 6         int rightd=minDepth(root->right);
 7         int depth=0;
 8         if(leftd==0&&rightd!=0) depth=1+rightd;
 9         else  if(rightd==0&&leftd!=0) depth=1+leftd;
10         else depth=1+min(leftd,rightd);
11         return depth;
12 
13     }
14 };

递归一遍反正写不明白,抽时间再写写吧

标签:right,TreeNode,int,part02,nullptr,二叉树,DAY12,root,left
From: https://www.cnblogs.com/xzdmzrc221202/p/18332917

相关文章

  • Day 28 贪心算法 Part02
    55.跳跃游戏这道题我是从后往前做的,但由于用了递归,速度会慢一些,但整体时间复杂度也是O(N)。我的思路其实就是找到最后一个可以到达目标位置处的下标,如果不存在这样的位置,就说明最后一个位置不可达。假设找到了,我们就需要去判断找到的这个位置是否可达,此时它的可达性与最后一个......
  • 代码随想录day14 || 226 翻转二叉树,101 对称二叉树, 104 二叉树的最大深度, 111 二叉树
    226翻转二叉树funcinvertTree(root*TreeNode)*TreeNode{ //思考,广度优先遍历,对于每一层,翻转其左右子节点 ifroot==nil{ returnnil } queue:=list.New() queue.PushBack(root) size:=1//存储每一层的节点个数 forqueue.Len()>0{ varcountint ......
  • Day14 二叉树Part2 递归的应用(二叉树相关)
    任务226.翻转二叉树给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。思路逻辑上,我们知道用递归遍历一棵树,一定会遍历每个节点。因此在遍历的过程中处理即可。考虑递归基,即当节点为空时直接返回。考虑单层递归,为了反转二叉树,如何处理当前节点呢?即如何反转以当......
  • 算法笔记|Day11二叉树
    算法笔记|Day11二叉树☆☆☆☆☆leetcode144.二叉树的前序遍历题目分析代码☆☆☆☆☆leetcode94.二叉树的中序遍历题目分析代码☆☆☆☆☆leetcode145.二叉树的后序遍历题目分析代码☆☆☆☆☆leetcode102.二叉树的层序遍历题目分析代码☆☆☆☆☆leetcode107.......
  • LeetCode - #107 二叉树的层序遍历 II
    文章目录前言1.描述2.示例3.答案关于我们前言我们社区陆续会将顾毅(Netflix增长黑客,《iOS面试之道》作者,ACE职业健身教练。)的Swift算法题题解整理为文字版以方便大家学习与阅读。LeetCode算法到目前我们已经更新到105期,我们会保持更新时间和进度(周一、......
  • JAVA小白学习日记Day12
    CSS定位1.定位属性 在CSS中,position属性用于指定元素在文档流中的定位方式。常用的取值包括:static:默认值,元素遵循正常的文档流布局,不受top、right、bottom、left属性的影响。relative:元素相对于其正常位置进行定位,通过top、right、bottom、left属性可以调整元素相......
  • DAY13 二叉树part01
     今日任务 二叉树的递归遍历(前中后)二叉树的迭代遍历(前中后)二叉树的统一迭代遍历二叉树的层序遍历(共十道题目)完成情况递归已掌握,代码略迭代前中手写一编,后和统一未学习层序遍历题目如下102.二叉树的层序遍历1/**2*Definitionforabinarytreenode.3*s......
  • day23-back tracking-part02-7.25
    tasksfortoday:1.39.组合总和2.40.组合总和II3.131.分割回文串----------------------------------------------------------1.39.组合总和INthispractice,thekeychangeistherequirementthattheelementcanberepetativelyused,whichcanbeachievedby......
  • LeetCode LCR 124.推理二叉树(哈希表 + 建树)
    某二叉树的先序遍历结果记录于整数数组 preorder,它的中序遍历结果记录于整数数组 inorder。请根据 preorder 和 inorder 的提示构造出这棵二叉树并返回其根节点。注意:preorder 和 inorder 中均不含重复数字。示例1:输入:preorder=[3,9,20,15,7],inorder=......
  • Day13 二叉树Part1 遍历
    递归遍历要理解递归,可以借助二叉树的递归遍历来理解。下面是二叉树递归遍历,以这个为例,来阐述下递归的原理。#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=......