当前位置: 首页 > news >正文

代码随想录day14| 226.翻转二叉树 、101. 对称二叉树 、 104.二叉树的最大深度、 111.二叉树的最小深度

代码随想录day14| 226.翻转二叉树 、101. 对称二叉树 、 104.二叉树的最大深度、 111.二叉树的最小深度

  • 226.翻转二叉树
    • 思路
  • 01. 对称二叉树
    • 思路
  • 104.二叉树的最大深度
    • 思路
  • 111.二叉树的最小深度

226.翻转二叉树

思路

使用递归将子树的左右子树翻转

class Solution {public TreeNode invertTree(TreeNode root) {return reverseTree(root);}public TreeNode reverseTree(TreeNode root) {if(root== null){return null;}swapNode(root);reverseTree(root.left);reverseTree(root.right);return root;}public void swapNode(TreeNode root) {TreeNode node = new TreeNode();node = root.left;root.left = root.right;root.right = node;}
}

01. 对称二叉树

思路

使用递归判断左右子树是否对称,这里使用后序遍历且返回boolean值,只有左子树是否对称的结果,右子树的结果都为true,则当前根节点为true

class Solution {public boolean isSymmetric(TreeNode root) {return compare(root.left, root.right);}public boolean compare(TreeNode left, TreeNode right){if(left == null && right != null){return false;}else if(left != null && right == null){return false;}else if(left == null && right == null){return true;}else if(left.val != right.val){return false;}//这里注意别比较相等时候,弄清楚结束边界// else if(left.val == right.val){//     return true;// }boolean a =  compare(left.right, right.left);boolean b =  compare(left.left, right.right);return a && b;}
}

104.二叉树的最大深度

思路

  • 二叉树的最大深度就是根节点的最大高度
  • 递归函数传入两个参数root和deepth,deepth用来更新当前高度。
  • 每次递归返回当前节点的最大高度,取左子树和右子树的高度最大值加一(1+Math.max(left,right))
class Solution {public int maxDepth(TreeNode root) {int deep = 0;return getDepth(root, deep);}public int getDepth(TreeNode root, int deep) {if(root == null){return 0;}int left = getDepth(root.left,deep);int right = getDepth(root.right, deep);return 1+Math.max(left,right);}
}

111.二叉树的最小深度

class Solution {/*** 递归法,相比求MaxDepth要复杂点* 因为最小深度是从根节点到最近**叶子节点**的最短路径上的节点数量*/public int minDepth(TreeNode root) {if (root == null) {return 0;}int leftDepth = minDepth(root.left);int rightDepth = minDepth(root.right);if (root.left == null) {return rightDepth + 1;}if (root.right == null) {return leftDepth + 1;}// 左右结点都不为nullreturn Math.min(leftDepth, rightDepth) + 1;}
}

http://www.mrgr.cn/news/64938.html

相关文章:

  • Java学习Day57:碧水金睛兽!(Spring Cloud微服务1.0)
  • Prometheus套装部署到K8S+Dashboard部署详解
  • 【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
  • 深度学习:正则化(Regularization)详细解释
  • MyBatis 第二章
  • pgSQL中对json数组中的一个元素中的字段进行条件查询
  • ssm+vue669基于web的学生考勤管理系统设计与实现
  • 使用uniapp使用音乐播放组件网易云
  • 系统架构师如何备考-超有用的备考经验(送博主用到的资料)
  • 国内PLC市场份额报告,西门子老大的地位从未动摇
  • Web服务器(理论)
  • 青少年编程能力等级测评CPA试卷(2)Python编程(一级)
  • 华为HCIP —— QinQ技术实验配置
  • 你还在用一串数字访问你的系统吗?
  • Android IPC机制(三)进程间通信方式
  • CentOS8.5.2111(6)冬日阳光下跳一曲桑巴--SAMBA共享存储
  • 免费送源码:Java+springboot+MySQL springboot 线上线下一体化的宠物交易 计算机毕业设计原创定制
  • 关于Mac打包ipa的配置小结
  • 算法中使用的数据结构解释*
  • Ubuntu18.04服务器非root用户在虚拟环境下的python版本设定
  • [SICTF Round4] PWN
  • 【算法】选择排序
  • 基于STM32的农业监测与管理系统设计思路介绍(代码示例)
  • 程序员的减压秘籍:高效与健康的平衡艺术
  • Docker篇(registry私服)
  • C++ 优先算法 —— 查找总价格为目标值的两个商品(双指针)