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

c2c网站建设策划书网页设计师的职业规划

c2c网站建设策划书,网页设计师的职业规划,长尾关键词查询工具,短视频运营方案110. 平衡二叉树 题目链接 题目描述#xff1a; 给定一个二叉树#xff0c;判断它是否是高度平衡的二叉树。 本题中#xff0c;一棵高度平衡二叉树定义为#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,nul…110. 平衡二叉树 题目链接 题目描述 给定一个二叉树判断它是否是高度平衡的二叉树。 本题中一棵高度平衡二叉树定义为一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4] 返回 false 。 难点 二叉树节点的深度指从根节点到该节点的最长简单路径边的条数。二叉树节点的高度指从该节点到叶子节点的最长简单路径边的条数。 思路 要求比较高度必然是要后序遍历。 时间复杂度O() 空间复杂度O() class Solution {public boolean isBalanced(TreeNode root) {if (root null) return true;return !(getHeight(root) -1);}private int getHeight(TreeNode root) {if (root null) return 0; //空结点高度为0int leftH getHeight(root.left);if (leftH -1) return -1;int rightH getHeight(root.right);if (rightH -1) return -1;return Math.abs(leftH-rightH) 1 ? -1 : 1Math.max(leftH, rightH);} }时长 15min 收获 区分深度与高度 递归方法练习 257. 二叉树的所有路径 题目链接 题目描述 给定一个二叉树返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 难点 思路 时间复杂度O() 空间复杂度O() class Solution {ListString resList new ArrayList();public ListString binaryTreePaths(TreeNode root) {if (root null) return resList;ListInteger path new ArrayList();traversal(root, path);return resList;}private void traversal(TreeNode root, ListInteger path) {path.add(root.val);if (root.left null root.right null) {StringBuilder sb new StringBuilder();for (int i 0; i path.size()-1; i) {sb.append(path.get(i)).append(-);}sb.append(path.get(path.size()-1));resList.add(sb.toString());return;}if (root.left ! null) {traversal(root.left, path);path.remove(path.size()-1);}if (root.right ! null) {traversal(root.right, path);path.remove(path.size()-1);}} }如果想隐藏回溯要小心了 if (root.left ! null) {traversal(root.left, path.append(-)); } if (root.right ! null) {traversal(root.right, path.append(-)); }这么写大错特错因为通过path.append方法字符串元素是累计添加到path中退出函数时并不能达到回溯的目的 正确的做法是new一个StringBuilder对象作为参数传入 class Solution {ListString resList new ArrayList();public ListString binaryTreePaths(TreeNode root) {if (root null) return resList;StringBuilder path new StringBuilder();traversal(root, path);return resList;}private void traversal(TreeNode root, StringBuilder path) {path.append(root.val);if (root.left null root.right null) {resList.add(path.toString());return;}if (root.left ! null) {traversal(root.left, new StringBuilder(path).append(-));}if (root.right ! null) {traversal(root.right, new StringBuilder(path).append(-));}} }当然使用字符串拼接实现会更容易 ListString resList new ArrayList();public ListString binaryTreePaths(TreeNode root) {if (root null) return resList;String path ;traversal(root, path);return resList;}private void traversal(TreeNode root, String path) {path root.val;if (root.left null root.right null) {resList.add(path);return;}if (root.left ! null) {traversal(root.left, path-);}if (root.right ! null) {traversal(root.right, path-);}}迭代法 class Solution {public ListString binaryTreePaths(TreeNode root) {ListString result new ArrayList();if (root null)return result;StackObject stack new Stack();// 节点和路径同时入栈stack.push(root);stack.push(root.val );while (!stack.isEmpty()) {// 节点和路径同时出栈String path (String) stack.pop();TreeNode node (TreeNode) stack.pop();// 若找到叶子节点if (node.left null node.right null) {result.add(path);}//右子节点不为空if (node.right ! null) {stack.push(node.right);stack.push(path - node.right.val);}//左子节点不为空if (node.left ! null) {stack.push(node.left);stack.push(path - node.left.val);}}return result;} }时长 13min 收获 注意拼接字符串的细节 404. 左叶子之和 题目链接 题目描述 计算给定二叉树的所有左叶子之和。 示例 难点 思路 找左叶子之和 核心判断当前节点是否有左孩子左孩子是否为叶子 时间复杂度O() 空间复杂度O() 这样写是不对的 变量值sum没有返回。。。什么原因 public int sumOfLeftLeaves(TreeNode root) {int sum 0;traversal(root, sum);return sum; } private void traversal(TreeNode root, int sum) {if (root null) return;if (root.left ! null root.left.left null root.left.right null) {sum root.left.val;}traversal(root.left, sum);traversal(root.right, sum); }sum不能通过函数的形参传入 int sum 0; public int sumOfLeftLeaves(TreeNode root) {traversal(root);return sum; } private void traversal(TreeNode root) {if (root null) return;if (root.left ! null root.left.left null root.left.right null) {sum root.left.val;}traversal(root.left);traversal(root.right); }迭代法 // 先序遍历 class Solution {public int sumOfLeftLeaves(TreeNode root) {if (root null) return 0;StackTreeNode stack new Stack ();stack.add(root);int result 0;while (!stack.isEmpty()) {TreeNode node stack.pop();if (node.left ! null node.left.left null node.left.right null) {result node.left.val;}if (node.right ! null) stack.add(node.right);if (node.left ! null) stack.add(node.left);}return result;} }// 层序遍历 class Solution {public int sumOfLeftLeaves(TreeNode root) {int sum 0;if (root null) return 0;QueueTreeNode queue new LinkedList();queue.offer(root);while (!queue.isEmpty()) {int size queue.size();while (size -- 0) {TreeNode node queue.poll();if (node.left ! null) { // 左节点不为空queue.offer(node.left);if (node.left.left null node.left.right null){ // 左叶子节点sum node.left.val;}}if (node.right ! null) queue.offer(node.right);}}return sum;} }时长 10min 收获 参数传递
http://www.dnsts.com.cn/news/138028.html

相关文章:

  • 网站的衡量标准优秀电商网站
  • 网站推广与搜索引擎优化看国外的视频用什么浏览器
  • 做机械设备的做哪个网站推广较好书店网站建设策划书总结
  • 做网站的生产方式佛山+客户端官网
  • 什么是优化问题长沙seo网站排名优化公司
  • 网站建设教程集体苏州久远网络湖南大钧工程建设有限公司网站
  • 开发公司认领工程网站做软件工资高还是网站
  • 网站调用字体wordpress咋建站
  • 徐州地区网站建设网络营销推广建议
  • 哈尔滨网站制作方案wordpress手机 ios
  • 成都专业网站设计公司建网站的步骤和方法
  • 做地方网站能赚钱吗怎么做婚庆网站平台
  • 临沂企业网站做网站开发要学什么语言
  • g4560做网站服务器大型企业网站设计案例
  • 成都企业网站设计网站修改联系方式
  • 卫生院网站建设做织梦网站之前要新建数据库吗
  • 手机网站设计框架wordpress佣金分成
  • 怎么做网站支付php网站访问很慢
  • 邹平做网站的联系方式新乡市做网站
  • 什么是网站制作app网站开发进阶实训报告
  • 如何提高网站的功能性建设中国常用网站
  • 无锡网站建设 君通科技wordpress 主页地址函数
  • 广州知名网站建设企业文化ppt
  • 网址站点出现异常怎么办php按步骤做网站
  • 做贸易常用的网站余姚厂家高端网站设计
  • 济南制作网站公司哪家好网站建设现况分析
  • 建设银行手机外汇网站淘宝客如何建立自己的网站
  • 培训校园网站建设简报免费信息发布平台网站
  • 莱芜公交网站广东省app开发公司
  • 纯静态 网站英文网站怎么做推广