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

自己做的手工放在哪个网站卖新余建站公司

自己做的手工放在哪个网站卖,新余建站公司,软件自学网站,wordpress主题tint-k力扣爆刷第141天之二叉树十连刷#xff08;层序遍历#xff09; 文章目录 力扣爆刷第141天之二叉树十连刷#xff08;层序遍历#xff09;一、102. 二叉树的层序遍历二、107. 二叉树的层序遍历 II三、199. 二叉树的右视图四、637. 二叉树的层平均值五、429. N 叉树的层序遍…力扣爆刷第141天之二叉树十连刷层序遍历 文章目录 力扣爆刷第141天之二叉树十连刷层序遍历一、102. 二叉树的层序遍历二、107. 二叉树的层序遍历 II三、199. 二叉树的右视图四、637. 二叉树的层平均值五、429. N 叉树的层序遍历六、515. 在每个树行中找最大值七、116. 填充每个节点的下一个右侧节点指针八、117. 填充每个节点的下一个右侧节点指针 II九、104. 二叉树的最大深度十、111. 二叉树的最小深度 一、102. 二叉树的层序遍历 题目链接https://leetcode.cn/problems/binary-tree-level-order-traversal/description/ 思路层序遍历使用队列完成经典题目。通过队列size来控制层序遍历。 class Solution {ListListInteger result new ArrayList();public ListListInteger levelOrder(TreeNode root) {if(root null) return result;LinkedListTreeNode queue new LinkedList();queue.add(root);while(!queue.isEmpty()) {int size queue.size();ListInteger list new ArrayList();for(int i 0; i size; i) {TreeNode node queue.poll();list.add(node.val);if(node.left ! null) queue.add(node.left);if(node.right ! null) queue.add(node.right);}result.add(list);}return result;} }二、107. 二叉树的层序遍历 II 题目链接https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/description/ 思路要求从叶子层到根节点层进行层序遍历直接层序遍历然后翻转数组。 class Solution {public ListListInteger levelOrderBottom(TreeNode root) {ListListInteger result new ArrayList();LinkedListTreeNode queue new LinkedList();if(root null) return result;queue.add(root);while(!queue.isEmpty()) {int size queue.size();ListInteger list new ArrayList();for(int i 0; i size; i) {TreeNode node queue.poll();list.add(node.val);if(node.left ! null) queue.add(node.left);if(node.right ! null) queue.add(node.right);}result.add(list);}int i 0, j result.size()-1;while(i j) {ListInteger t result.get(i);result.set(i, result.get(j));result.set(j, t);i;j--;}return result;} }三、199. 二叉树的右视图 题目链接https://leetcode.cn/problems/binary-tree-right-side-view/description/ 思路本题可以直接层序遍历只需要在每一层遍历到size时记录数据。也可以直接前序遍历只不过遍历的顺序是右中左而且维护一个深度值只有每次突破深度时才记录。 class Solution {ListInteger list new ArrayList();public ListInteger rightSideView(TreeNode root) {if(root null) return list;LinkedListTreeNode queue new LinkedList();queue.add(root);while(!queue.isEmpty()) {int size queue.size();for(int i 0; i size; i) {TreeNode node queue.poll();if(i size-1) {list.add(node.val);}if(node.left ! null) queue.add(node.left);if(node.right ! null) queue.add(node.right);}}return list;}}四、637. 二叉树的层平均值 题目链接https://leetcode.cn/problems/average-of-levels-in-binary-tree/description/ 思路直接层序遍历然后收集每一层的总和利用size算平均值。 class Solution {public ListDouble averageOfLevels(TreeNode root) {ListDouble list new ArrayList();LinkedListTreeNode queue new LinkedList();queue.add(root);while(!queue.isEmpty()) {int size queue.size();double avg 0;for(int i 0; i size; i) {TreeNode node queue.poll();avg node.val;if(node.left ! null) queue.add(node.left);if(node.right ! null) queue.add(node.right);}list.add(avg/size);}return list;} }五、429. N 叉树的层序遍历 题目链接https://leetcode.cn/problems/n-ary-tree-level-order-traversal/description/ 思路N叉树的层序遍历比二叉树来说只是多了几个叉不需要在直接写左右子树了直接一个for循环把子节点全遍历出来。 /* // Definition for a Node. class Node {public int val;public ListNode children;public Node() {}public Node(int _val) {val _val;}public Node(int _val, ListNode _children) {val _val;children _children;} }; */class Solution {public ListListInteger levelOrder(Node root) {ListListInteger result new ArrayList();if(root null) return result;LinkedListNode queue new LinkedList();queue.add(root);while(!queue.isEmpty()) {int size queue.size();ListInteger list new ArrayList();for(int i 0; i size; i) {Node node queue.poll();list.add(node.val);for(Node temp : node.children) {if(temp ! null) {queue.add(temp);}}}result.add(list);} return result;} }六、515. 在每个树行中找最大值 题目链接https://leetcode.cn/problems/find-largest-value-in-each-tree-row/description/ 思路没啥东西就是层序遍历遍历每一层然后比较获取最大值。 /*** 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 ListInteger largestValues(TreeNode root) {ListInteger list new ArrayList();if(root null) return list;LinkedListTreeNode queue new LinkedList();queue.add(root);while(!queue.isEmpty()) {int size queue.size();int max Integer.MIN_VALUE;for(int i 0; i size; i) {TreeNode node queue.poll();max Math.max(max, node.val);if(node.left ! null) queue.add(node.left);if(node.right ! null) queue.add(node.right);}list.add(max);}return list;} }七、116. 填充每个节点的下一个右侧节点指针 题目链接https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/description/ 思路要求横向连接完美二叉树本题可以层序遍历遍历时先添加右子树再添加左子树。也可以使用递归递归的话每次递归传入左右两个节点然后让左节点指向右节点。 /* // Definition for a Node. class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val _val;}public Node(int _val, Node _left, Node _right, Node _next) {val _val;left _left;right _right;next _next;} }; */class Solution {public Node connect(Node root) {LinkedListNode queue new LinkedList();if(root null) return root;queue.add(root);while(!queue.isEmpty()) {int size queue.size();Node p null;for(int i 0; i size; i) {Node node queue.poll();node.next p;p node;if(node.right ! null) queue.add(node.right);if(node.left ! null) queue.add(node.left);}}return root;}}八、117. 填充每个节点的下一个右侧节点指针 II 题目链接https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/description/ 思路上一题是完全二叉树可以使用递归来做本题是普通二叉树使用层序遍历会简单很多具体解法和上一题一致。 /* // Definition for a Node. class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val _val;}public Node(int _val, Node _left, Node _right, Node _next) {val _val;left _left;right _right;next _next;} }; */class Solution {public Node connect(Node root) {if(root null) return root;LinkedListNode queue new LinkedList();queue.add(root);while(!queue.isEmpty()) {int size queue.size();Node p null;for(int i 0; i size; i) {Node node queue.poll();node.next p;p node;if(node.right ! null) queue.add(node.right);if(node.left ! null) queue.add(node.left);}}return root;} }九、104. 二叉树的最大深度 题目链接https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 思路本题还是使用递归吧后序遍历直接解决使用层序遍历只需要记录层的个数就可以大材小用了。 class Solution {public int maxDepth(TreeNode root) {if(root null) return 0;int left maxDepth(root.left);int right maxDepth(root.right);return Math.max(left, right) 1;} }十、111. 二叉树的最小深度 题目链接https://leetcode.cn/problems/minimum-depth-of-binary-tree/description/ 思路可以使用递归用一个全局变量记录最小深度然后在递归函数的参数中携带当前深度直接遍历就行了在叶子节点收集结果。 也可以层序遍历只需要在每一层层序遍历时记录叶子节点只要发现叶子节点即可返回。 class Solution {int min Integer.MAX_VALUE;public int minDepth(TreeNode root) {if(root null) return 0;fun(root, 1);return min;}void fun(TreeNode root, int v) {if(root null) return ;if(root.left null root.right null) {min Math.min(min, v);return ;}fun(root.left, v1);fun(root.right, v1);} }
http://www.zqtcl.cn/news/224844/

相关文章:

  • 服务器如何发布网站正能量不良网站进入窗口免费阅读
  • 深圳个性化建网站服务商百度秒收录神器
  • 金华做公司网站wordpress会员可见插件
  • 访问自己做的网站河南百度推广公司
  • Wordpress+仿站+工具建筑材料采购网站
  • 汕头免费建设网站制作阆中市网站建设
  • 怎样做网站表白墙网站设计的一般流程是什么
  • 河北手机网站制作企业网页设计的基本步骤和流程
  • 企业网站内容如何更新软件开发公司网站模板
  • 北京网站建设收费长沙有哪个学校可以学网站建设
  • 南江网站建设中国最好的app开发公司
  • 简单旅游网站开发建立网站的三种方式
  • 大连网站的优化网站设计 优帮云
  • 梧州网站seo表白网站在线生成免费
  • 网站制作体会php网站开发答案
  • 南阳响应式网站淘宝上成都网站建设
  • 深圳做手机网站设计wordpress禁用wp-cron
  • 如何自己建公司网站搜索引擎排名2020
  • 济南建站商业网站开发入门选课
  • 济南网络免费推广网站四川建设厅官方网站查询
  • 中国建设银行网站首页wordpress安装多个
  • 中国住建厅网站官网怎么建立网站快捷方式
  • 天津协会网站建设怎么用dw做带登陆的网站
  • 南宁做网站服务商苏州网站建设品牌
  • 做平台销售网站上海市普陀区建设规划局网站
  • 网站的积分系统怎么做电影在线观看
  • 成都网站建设方案服务旅游网站建设报价单
  • 京东网址seo排名查询工具
  • 南京制作网站速成班外贸营销信模板
  • 简单网站建设规划方案物联网网站设计