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

【Hot100】LeetCode—543. 二叉树的直径

目录

  • 1- 思路
    • 深搜——dfs
  • 2- 实现
    • ⭐543. 二叉树的直径——题解思路
  • 3- ACM 实现


  • 原题连接:543. 二叉树的直径

1- 思路

深搜——dfs

递归三部曲

  • 1- 递归参数和返回值
    • 返回 public int depth(TreeNode root)
  • 2- 终止条件
    • 如果遇到 null,则返回 0
  • 3- 递归表达式
    • return Math.max(left,right)+1

image.png


2- 实现

⭐543. 二叉树的直径——题解思路

在这里插入图片描述

class Solution {int res = 0;public int diameterOfBinaryTree(TreeNode root) {depth(root);return res;}public int depth(TreeNode root){if(root==null){return 0;}int left = depth(root.left);int right = depth(root.right);res = Math.max(res,left+right);return Math.max(left,right)+1;}
}

3- ACM 实现

public class diameterOfBinaryTree {public static class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}}public static TreeNode build(String str){if(str == null || str.length()==0){return null;}String input = str.replace("[","");input = input.replace("]","");String[] parts = input.split(",");Integer[] nums = new Integer[parts.length];for(int i = 0 ; i < parts.length;i++){if(!parts[i].equals("null")){nums[i] = Integer.parseInt(parts[i]);}else{nums[i] = null;}}Queue<TreeNode> queue = new LinkedList<>();TreeNode root = new TreeNode(nums[0]);queue.offer(root);int index = 1;while(!queue.isEmpty()&& index<parts.length){TreeNode node = queue.poll();if(index<nums.length && nums[index]!=null){node.left = new TreeNode(nums[index]);queue.offer(node.left);}index++;if(index<nums.length && nums[index]!=null){node.right = new TreeNode(nums[index]);queue.offer(node.right);}index++;}return root;}static int res = 0;public static int diameterOfBinaryTree(TreeNode root) {depth(root);return res;}public static int depth(TreeNode root){if(root==null){return 0;}int left = depth(root.left);int right = depth(root.right);res = Math.max(res,left+right);return Math.max(left,right)+1;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();TreeNode root = build(input);System.out.println("结果是"+diameterOfBinaryTree(root));}
}

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

相关文章:

  • linux上datax 安装以及使用
  • 在线英语学习小程序App源码开发技术探讨
  • 鸿蒙HarmonyOS实战:IPC与RPC设备内进程通信
  • Android 应用中广播权限未指定风险与解决方案
  • Linux 可视化管理工具:Webmin
  • 【三维室内数据集】ScanNet v2使用说明
  • 分区表学习相关资料记录
  • (十三)Flink SQL
  • linux查询目录文件基础操作
  • 使用静态IP为什么比动态IP的人多?
  • 如何实现一棵红黑树
  • OpenCV+Python识别机读卡
  • 博客建站7 - hexo博客独立服务器如何自动部署?
  • java JVM G1垃圾收集器一些主要特性和工作原理
  • 【网络】HTTP
  • util.callbackify详解:将Promise或Async函数转换为回调风格
  • opencv图像基本操作
  • 动手学深度学习7.6 残差网络(ResNet)-笔记练习(PyTorch)
  • 大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程
  • 基于PHP的文件上传