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

网站开发工程师培训机构做网站有高手没有

网站开发工程师培训机构,做网站有高手没有,wordpress图文排版,wordpress 最新发展文章目录 题目考察点代码实现实现总结对实现进一步改进扩展提问 坚持刷题#xff0c;老年痴呆追不上我#xff0c;今天继续二叉树#xff1a;平衡二叉树 题目 110.平衡二叉树 考察点 递归能力#xff1a; 能否使用递归来解决问题。树的基本操作#xff1a;能否正确地访… 文章目录 题目考察点代码实现实现总结对实现进一步改进扩展提问 坚持刷题老年痴呆追不上我今天继续二叉树平衡二叉树 题目 110.平衡二叉树 考察点 递归能力 能否使用递归来解决问题。树的基本操作能否正确地访问节点的值左子树右子树等。理解平衡二叉树能够理解平衡二叉树的定义。边界条件处理 能否正确处理空树的情况。时间和空间复杂度 解决问题的方法是否具有合理的时间和空间复杂度。 代码实现 class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val x;} }public class BinaryTreeBalance {public boolean isBalanced(TreeNode root) {if (root null) {return true;}int leftHeight getHeight(root.left);int rightHeight getHeight(root.right);// 检查当前节点是否平衡并递归检查左右子树return Math.abs(leftHeight - rightHeight) 1 isBalanced(root.left) isBalanced(root.right);}private int getHeight(TreeNode node) {if (node null) {return 0;}// 递归计算左右子树的高度取最大值加上当前节点的高度1return 1 Math.max(getHeight(node.left), getHeight(node.right));}public static void main(String[] args) {BinaryTreeBalance solution new BinaryTreeBalance();// 在这里构建你的二叉树TreeNode root new TreeNode(1);root.left new TreeNode(2);root.right new TreeNode(3);root.left.left new TreeNode(4);root.left.right new TreeNode(5);// 调用isBalanced方法判断是否为平衡二叉树boolean result solution.isBalanced(root);// 输出结果System.out.println(Is the binary tree balanced? result);} }实现总结 递归使用递归来计算每个节点的高度参考 坚持刷题二叉树的最大深度检查左右子树的高度差是否超过1若超过1则说明不是平衡二叉树时间复杂度 O(n log n)。因为对于每个节点都需要计算其左右子树的高度而计算高度的时间复杂度是 O(log n)空间复杂度 O(log n)递归调用栈的深度等于该节点的高度。在平衡二叉树的情况下树的高度是 O(log n) 级别的。因此递归调用的空间复杂度是 O(log n)。需要注意的是这里的空间复杂度并不仅仅是由递归调用所使用的空间构成还包括了递归过程中的临时变量、参数传递等所占用的空间。 对实现进一步改进 避免重复计算节点的高度 在上面的实现中对每个节点都调用了getHeight方法来计算高度。这可能导致重复计算尤其是对于同一个节点。为了避免这种情况可以修改算法使得在计算高度的同时判断平衡条件。 一边计算高度一边判断平衡条件 可以在递归调用的过程中一边计算左右子树的高度一边判断当前节点是否满足平衡条件。这样可以避免递归两次计算相同节点的高度。 class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val x;} }public class BalancedBinaryTree {public boolean isBalanced(TreeNode root) {return checkHeightAndBalance(root) ! -1;}private int checkHeightAndBalance(TreeNode node) {if (node null) {return 0; // 空树是平衡的高度为0}int leftHeight checkHeightAndBalance(node.left);if (leftHeight -1) {return -1; // 左子树不平衡直接返回-1}int rightHeight checkHeightAndBalance(node.right);if (rightHeight -1) {return -1; // 右子树不平衡直接返回-1}// 判断当前节点是否平衡如果不平衡则返回-1否则返回当前节点的高度if (Math.abs(leftHeight - rightHeight) 1) {return -1;} else {return Math.max(leftHeight, rightHeight) 1; // 返回当前节点的高度}}public static void main(String[] args) {BalancedBinaryTree solution new BalancedBinaryTree();// 在这里构建你的二叉树TreeNode root new TreeNode(1);root.left new TreeNode(2);root.right new TreeNode(3);root.left.left new TreeNode(4);root.left.right new TreeNode(5);// 调用isBalanced方法判断是否为平衡二叉树boolean result solution.isBalanced(root);// 输出结果System.out.println(Is the binary tree balanced? result);} }在这个改进的实现中checkHeightAndBalance方法返回-1表示不平衡否则返回当前节点的高度。这样可以在计算高度的同时判断平衡条件避免了重复计算。 扩展提问 可以用非递归的方式实现吗时间复杂度和空间复杂度又会如何呢
http://www.hkea.cn/news/14367088/

相关文章:

  • 微信网站开发流程图建设手机银行app下载安装最新版
  • 安徽省住房和城乡建设厅官方网站池州专业网站建设哪家好
  • 淘宝客做网站多少钱发行商城小程序
  • 网站建设基本流程郑州网站开发的公司
  • 深圳网站制作网站建设怎么制作网站深圳博纳优设网页官网
  • 网站建设好还需投资吗如何在eclipse上做网站
  • 全景网站如何建设WordPress缩图不显示
  • 文化馆互联网站建设方案品牌建设对策
  • 没有备案网站可以做优化么网页设计教程视屏
  • 南通做网站公司seo网站页面诊断
  • 微站和网站数据同步安徽网站建设推荐 晨飞网络
  • 抖音做我女朋友的网站沭阳网站建设
  • 行业网站建设的开发方案网站后台怎么做qq群自动加
  • jsp网站开发实例视频教程建站哪家好论坛
  • 玉溪网站建设网页布局设计说明
  • 遵义广告公司网站建设设计师之家资源库
  • 网站死链是什么企业网络营销青岛
  • sqlite做网站wordpress文章墙插件
  • 百度手机模板网站重庆工商学校官网
  • php 网站伪静态网站空间大小查询
  • 专业手机移动网站建设佛山网站建站推广
  • 网站建设有哪些优势网络科技有限
  • 漳州专业做网站中国互联网前十名
  • 江门做网站seo的WordPress导出单页
  • 巴彦淖尔 网站建设建设班级网站 沟通无限
  • 如何建网站的步骤做网站素材图片
  • 网站建设几大技巧做外贸是不是必须有网站
  • 网站一般有哪些模块wordpress怎么安装模板文件
  • 网站建设三亚加强旅游网站建设
  • 承德做网站设计的网站建设书籍2013年的