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

代码随想三刷二叉树篇3

代码随想三刷二叉树篇3

  • 404. 左叶子之和
    • 题目
    • 代码
  • 513. 找树左下角的值
    • 题目
    • 代码
  • 112. 路径总和
    • 题目
    • 代码
  • 106. 从中序与后序遍历序列构造二叉树
    • 题目
    • 代码
  • 654. 最大二叉树
    • 题目
    • 代码

404. 左叶子之和

题目

链接

代码

/*** Definition for a binary tree node.* public 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;*     }* }*/
class Solution {public int sumOfLeftLeaves(TreeNode root) {traverse(root,false);return sum;}int sum = 0;public void traverse(TreeNode root,boolean isLeft){if(root==null){return;}if(root.left==null&&root.right==null&&isLeft){sum+=root.val;return;}traverse(root.left,true);traverse(root.right,false);}
}

513. 找树左下角的值

题目

链接

代码

/*** Definition for a binary tree node.* public 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;*     }* }*/
class Solution {public int findBottomLeftValue(TreeNode root) {Deque<TreeNode> queue = new LinkedList();queue.add(root);int result = root.val;while(!queue.isEmpty()){int size = queue.size();for(int i =0;i<size;i++){TreeNode temp = queue.removeFirst();if(i==0){result = temp.val;}if(temp.left!=null){queue.addLast(temp.left);}if(temp.right!=null){queue.addLast(temp.right);}}}return result;}
}

112. 路径总和

题目

链接

代码

/*** Definition for a binary tree node.* public 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;* }* }*/
class Solution {public boolean hasPathSum(TreeNode root, int targetSum) {if (root == null) {return false;}sum += root.val;traverse(root, targetSum);return isHas;}boolean isHas = false;int sum = 0;public void traverse(TreeNode root, int targetSum) {if (isHas) {return;}if (root == null) {return;}if (root.left == null && root.right == null) {if (targetSum == sum) {isHas = true;return;}}if (root.left != null) {sum += root.left.val;traverse(root.left, targetSum);sum -= root.left.val;}if (root.right != null) {sum += root.right.val;traverse(root.right, targetSum);sum -= root.right.val;}}
}

106. 从中序与后序遍历序列构造二叉树

题目

链接

代码

/*** Definition for a binary tree node.* public 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;*     }* }*/
class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) {if(inorder==null||inorder.length==0){return null;}if(inorder.length==1){return new TreeNode(inorder[0]);}int val = postorder[postorder.length-1];int index = 0;for(index = 0;index<inorder.length;index++){if(inorder[index]==val){break;}}int[] leftinorder = Arrays.copyOfRange(inorder,0,index);int[] rightinorder = Arrays.copyOfRange(inorder,index+1,inorder.length);int[] leftpostorder = Arrays.copyOfRange(postorder,0,index);int[] rightpostorder = Arrays.copyOfRange(postorder,index,inorder.length-1);TreeNode left = buildTree(leftinorder,leftpostorder);TreeNode right = buildTree(rightinorder,rightpostorder);TreeNode root =new TreeNode(val);root.left = left;root.right = right;return root;}   
}

654. 最大二叉树

题目

链接

代码

/*** Definition for a binary tree node.* public 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;*     }* }*/
class Solution {public TreeNode constructMaximumBinaryTree(int[] nums) {return traversal(nums);}public TreeNode traversal(int [] nums){if(nums==null||nums.length==0){return null;}//叶子if(nums.length==1){return  new TreeNode(nums[0]);}//找最大的int max = nums[0];int maxIndex = 0;for(int i=1;i<nums.length;i++){if(max<nums[i]){max = nums[i];maxIndex = i;}}TreeNode t = new TreeNode(max);//分割左右int[] leftNums = Arrays.copyOfRange(nums,0,maxIndex);int[] rightNums = Arrays.copyOfRange(nums,maxIndex+1,nums.length);t.left = traversal(leftNums);t.right = traversal(rightNums);return t;}
}

相关文章:

  • 代码随想录算法训练营第38天|● 理论基础 ● 509. 斐波那契数● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
  • Linux:文件描述符
  • ai写诗词,三款软件助你妙笔生花!
  • Cesium4Unreal - # 009 直接加载显示Shapefile
  • 返回给前端数据的封装
  • 【Spine学习13】之 制作受击动画思路总结(叠加颜色特效发光效果)
  • Go 基础丨字符串 string
  • 【已解决】better-scroll在PC端如何开启鼠标滚动以及如何始终显示滚动条
  • Vim基础操作:常用命令、安装插件、在VS Code中使用Vim及解决Vim编辑键盘错乱
  • 北方高温来袭!动力煤却不涨反跌的原因分析
  • 分支结构相关
  • JEnv-for-Windows 详细使用
  • 关于ReactV18的页面跳转传参和接收
  • 【干货分享】25地学考研推免夏令营汇总表
  • SpringBoot 多种优雅的线程池配置与使用(异步执行函数,反射机制,动态识别参数,有返回值)
  • Android 架构优化~MVP 架构改造
  • ECS应用管理最佳实践
  • flask接收请求并推入栈
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript-Array类型
  • JAVA多线程机制解析-volatilesynchronized
  • Joomla 2.x, 3.x useful code cheatsheet
  • Js基础知识(四) - js运行原理与机制
  • nfs客户端进程变D,延伸linux的lock
  • QQ浏览器x5内核的兼容性问题
  • React16时代,该用什么姿势写 React ?
  • react-native 安卓真机环境搭建
  • 阿里云应用高可用服务公测发布
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 从0实现一个tiny react(三)生命周期
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 大数据与云计算学习:数据分析(二)
  • 官方解决所有 npm 全局安装权限问题
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 写代码的正确姿势
  • 一个SAP顾问在美国的这些年
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​马来语翻译中文去哪比较好?
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #HarmonyOS:Web组件的使用
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (1)Android开发优化---------UI优化
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (Ruby)Ubuntu12.04安装Rails环境
  • (南京观海微电子)——COF介绍
  • (十)T检验-第一部分
  • (十三)Maven插件解析运行机制
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]