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

招投标网站销售怎么做/陕西网站关键词自然排名优化

招投标网站销售怎么做,陕西网站关键词自然排名优化,上海大型网站建设公司排名,北京门户网站有哪些LeetCode/卡码网题目: 144. 二叉树的前序遍历94. 二叉树的中序遍历145. 二叉树的后序遍历102. 二叉树的层序遍历107.二叉树的层次遍历II199. 二叉树的右视图637. 二叉树的层平均值429. N 叉树的层序遍历515. 在每个树行中找最大值116. 填充每个节点的下一个右侧节点指针117. 填…

LeetCode/卡码网题目:

  • 144. 二叉树的前序遍历
  • 94. 二叉树的中序遍历
  • 145. 二叉树的后序遍历
  • 102. 二叉树的层序遍历
  • 107.二叉树的层次遍历II
  • 199. 二叉树的右视图
  • 637. 二叉树的层平均值
  • 429. N 叉树的层序遍历
  • 515. 在每个树行中找最大值
  • 116. 填充每个节点的下一个右侧节点指针
  • 117. 填充每个节点的下一个右侧节点指针 II
  • 104. 二叉树的最大深度
  • 111. 二叉树的最小深度

其他:

今日总结
往期打卡


144. 二叉树的前序遍历

跳转:144. 二叉树的前序遍历

问题:

在这里插入图片描述

思路:

递归,迭代,空指针标记模拟递归

代码(递归):

void handle(TreeNode root,List<Integer> list){if(root == null) return;list.add(root.val);handle(root.left,list); handle(root.right,list);}public List<Integer> inorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();handle(root,ans);return ans;}

代码(迭代):

class Solution {public List<Integer> preorderTraversal(TreeNode root) {if(root==null) return new ArrayList<>();Stack<TreeNode> stack = new Stack<>();stack.push(root);List<Integer> ans = new ArrayList<>();while(!stack.isEmpty()){TreeNode tmp = stack.pop();ans.add(tmp.val);if(tmp.right!=null){stack.push(tmp.right);}if(tmp.left!=null){stack.push(tmp.left);} }return ans;}
}

代码(空指针标记模拟递归):

public List<Integer> inorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();if(root==null) return ans;Stack<TreeNode> stack = new Stack<>();stack.push(root);while(!stack.isEmpty()){TreeNode tmp = stack.pop();if(tmp==null){tmp = stack.pop();ans.add(tmp.val);}else{if(tmp.right!=null) stack.add(tmp.right);if(tmp.left!=null) stack.add(tmp.left);stack.add(tmp);stack.add(null);}}return ans;}

94. 二叉树的中序遍历

跳转: 94. 二叉树的中序遍历

在这里插入图片描述

问题:

思路:

递归,迭代,空指针标记模拟递归

代码(递归):

void handle(TreeNode root,List<Integer> list){if(root == null) return;handle(root.left,list);list.add(root.val);handle(root.right,list);}public List<Integer> inorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();handle(root,ans);return ans;}

代码(迭代):

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();if(root==null) return ans;Stack<TreeNode> stack = new Stack<>();while(root!=null||!stack.isEmpty()){if(root!=null){stack.push(root);root = root.left;}else{root = stack.pop();ans.add(root.val);root = root.right;}}return ans;}
}

代码(空指针标记模拟递归):

public List<Integer> inorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();if(root==null) return ans;Stack<TreeNode> stack = new Stack<>();stack.push(root);while(!stack.isEmpty()){TreeNode tmp = stack.pop();if(tmp==null){tmp = stack.pop();ans.add(tmp.val);}else{if(tmp.right!=null) stack.add(tmp.right);stack.add(tmp);stack.add(null);if(tmp.left!=null) stack.add(tmp.left);}}return ans;}

145. 二叉树的后序遍历

跳转: 145. 二叉树的后序遍历

问题:

在这里插入图片描述

思路:

递归,迭代,空指针标记模拟递归

代码(递归):

void handle(TreeNode root,List<Integer> list){if(root == null) return;handle(root.left,list);handle(root.right,list);list.add(root.val);}public List<Integer> inorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();handle(root,ans);return ans;}

代码(迭代):

    public List<Integer> postorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();if (root == null)return ans;Stack<TreeNode> stack = new Stack<>();stack.push(root);while(!stack.isEmpty()){TreeNode tmp = stack.pop();ans.add(tmp.val);if(tmp.left!=null) stack.add(tmp.left);if(tmp.right!=null) stack.add(tmp.right);}Collections.reverse(ans);return ans;}

代码(空指针标记模拟递归):

    public List<Integer> postorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();if (root == null)return ans;Stack<TreeNode> stack = new Stack<>();stack.push(root);while(!stack.isEmpty()){TreeNode tmp = stack.pop();if(tmp==null){tmp = stack.pop();ans.add(tmp.val);}else{stack.push(tmp);stack.push(null);if(tmp.right!=null) stack.push(tmp.right);if(tmp.left!=null) stack.push(tmp.left);}}return ans;}

102. 二叉树的层序遍历

跳转: 102. 二叉树的层序遍历

问题

在这里插入图片描述

思路:

利用队列层序遍历

代码:

class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> ans = new ArrayList<>();if(root==null) return ans;Queue<TreeNode> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){List<Integer> list = new ArrayList<>();int len = queue.size();while(len-->0){TreeNode tmp = queue.poll();list.add(tmp.val);if(tmp.left!=null) queue.add(tmp.left);if(tmp.right!=null) queue.add(tmp.right);}ans.add(list);}return ans;}
}

107.二叉树的层次遍历II

跳转: 107. 二叉树的层序遍历 II

问题

在这里插入图片描述

代码:

class Solution {public List<List<Integer>> levelOrderBottom(TreeNode root) {List<List<Integer>> ans = new ArrayList<>();if(root==null) return ans;Queue<TreeNode> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){List<Integer> list = new ArrayList<>();int len = queue.size();while(len-->0){TreeNode tmp = queue.poll();list.add(tmp.val);if(tmp.left!=null) queue.add(tmp.left);if(tmp.right!=null) queue.add(tmp.right);}ans.add(list);}Collections.reverse(ans);return ans;}
}

199. 二叉树的右视图

跳转: 199. 二叉树的右视图

问题

在这里插入图片描述

代码:

class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer> ans = new ArrayList<>();if(root==null) return ans;Queue<TreeNode> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){int right=0;int len = queue.size();for(int i=0;i<len;i++){TreeNode tmp = queue.poll();right = tmp.val;if(tmp.left!=null) queue.add(tmp.left);if(tmp.right!=null) queue.add(tmp.right);}if(len>0)ans.add(right);}return ans;}
}

637. 二叉树的层平均值

跳转: 637. 二叉树的层平均值

问题

在这里插入图片描述

代码:

class Solution {public List<Double> averageOfLevels(TreeNode root) {List<Double> ans = new ArrayList<>();if(root==null) return ans;Queue<TreeNode> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){Double avg=0.0;int len = queue.size();for(int i=0;i<len;i++){TreeNode tmp = queue.poll();avg += tmp.val;if(tmp.left!=null) queue.add(tmp.left);if(tmp.right!=null) queue.add(tmp.right);}if(len!=0)ans.add(avg/len);}return ans;}
}

429. N 叉树的层序遍历

跳转: 429. N 叉树的层序遍历

问题

在这里插入图片描述

代码:

class Solution {public List<List<Integer>> levelOrder(Node root) {List<List<Integer>> ans = new ArrayList<>();if(root==null) return ans;Queue<Node> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){List<Integer> list = new ArrayList<>();int len = queue.size();while(len-->0){Node tmp = queue.poll();list.add(tmp.val);for(Node child:tmp.children){queue.add(child);}}ans.add(list);}return ans;}
}

515. 在每个树行中找最大值

跳转: 515. 在每个树行中找最大值

问题

在这里插入图片描述

代码:

class Solution {public List<Integer> largestValues(TreeNode root) {List<Integer> ans = new ArrayList<>();if(root==null) return ans;Queue<TreeNode> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){int max=Integer.MIN_VALUE;int len = queue.size();for(int i=0;i<len;i++){TreeNode tmp = queue.poll();max = Math.max(max,tmp.val);if(tmp.left!=null) queue.add(tmp.left);if(tmp.right!=null) queue.add(tmp.right);}if(len>0)ans.add(max);}return ans;}
}

116. 填充每个节点的下一个右侧节点指针

跳转: 116. 填充每个节点的下一个右侧节点指针

问题

在这里插入图片描述

代码:

class Solution {public Node connect(Node root) {if(root==null) return null;Queue<Node> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){int len = queue.size();for(int i=0;i<len;i++){Node tmp = queue.poll();if(i==len-1) tmp.next = null;else tmp.next = queue.peek();if(tmp.left!=null) queue.add(tmp.left);if(tmp.right!=null) queue.add(tmp.right);}}return root;}
}

117. 填充每个节点的下一个右侧节点指针 II

跳转: 117. 填充每个节点的下一个右侧节点指针 II

问题

在这里插入图片描述

代码:

class Solution {public Node connect(Node root) {if(root==null) return null;Queue<Node> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){int len = queue.size();for(int i=0;i<len;i++){Node tmp = queue.poll();if(i==len-1) tmp.next = null;else tmp.next = queue.peek();if(tmp.left!=null) queue.add(tmp.left);if(tmp.right!=null) queue.add(tmp.right);}}return root;}
}

104. 二叉树的最大深度

跳转: 104. 二叉树的最大深度

问题

在这里插入图片描述

代码:

class Solution {public int maxDepth(TreeNode root) {if(root==null) return 0;Queue<TreeNode> queue = new LinkedList<>();queue.add(root);int deep = 0;while(!queue.isEmpty()){int len = queue.size();deep ++;for(int i=0;i<len;i++){TreeNode tmp = queue.poll();if(tmp.left!=null) queue.add(tmp.left);if(tmp.right!=null) queue.add(tmp.right);}}return deep;}
}

111. 二叉树的最小深度

跳转: 111. 二叉树的最小深度

问题

在这里插入图片描述

代码:

class Solution {public int minDepth(TreeNode root) {if(root==null) return 0;Queue<TreeNode> queue = new LinkedList<>();queue.add(root);int deep = 0;while(!queue.isEmpty()){int len = queue.size();deep ++;for(int i=0;i<len;i++){TreeNode tmp = queue.poll();if(tmp.left!=null) queue.add(tmp.left);if(tmp.right!=null) queue.add(tmp.right);if(tmp.left==null&&tmp.right==null) return deep;}}return deep;}
}

总结

练习了递归遍历和层序遍历,后面都是层序遍历的题,所以每题改动不大
为什么如此匆忙,因为电脑快没电了
建议去力扣自己练习,使用效果更佳

往期打卡

代码随想录算法训练营第一天

代码随想录算法训练营第二天

代码随想录算法训练营第三天

代码随想录算法训练营第四天

代码随想录算法训练营周末一

代码随想录算法训练营第五天

代码随想录算法训练营第六天

代码随想录算法训练营第七天

代码随想录算法训练营第八天

代码随想录算法训练营第九天

代码随想录算法训练营第十天

代码随想录算法训练营周末二

http://www.whsansanxincailiao.cn/news/32045646.html

相关文章:

  • 做网站推广送什么/拓客软件排行榜
  • 南京做企业网站/品牌营销经典案例
  • web小型制作网站的模板/百度seo搜索引擎优化方案
  • 网站开发的历史/长春网站建设定制
  • 四川省建设局网站/广州百度竞价开户
  • wordpress多站点 seo/交友网站有哪些
  • 吉利网站建设/自主建站
  • 建设部电教中心网站/百度快照怎么看
  • 如何做网站流量分析/5118站长工具
  • 游戏优化是什么意思/杭州网站优化方案
  • 小白如何制作网页/威海百度seo
  • 营销网站制作费用/seo企业推广案例
  • 网站备案号示例/seo搜索引擎优化工资
  • 网站建设看什么书/百度网站怎么优化排名靠前
  • 网站 维护 协议/查关键词排名工具app
  • 深圳住房和建设局网站/国内新闻大事20条
  • 松阳建设局网站/营销计划书7个步骤
  • 正规的机械外包加工订单网/标题优化
  • 百度小程序审核/seo免费优化
  • 白云区网络推广/网站优化排名方法有哪些
  • 网站建设属于什么部门/怎么在百度上发布广告
  • 网站建设推广公司哪家权威/湖南百度seo排名点击软件
  • 网站seo优化的重要性/宁波怎么优化seo关键词
  • 接做网站单子的网站/风云榜百度
  • 中通物流企业网站建设书/百度竞价推广托管
  • php做网站优点/淄博seo公司
  • 在哪里做卖车网站/广州seo托管
  • wordpress漫画站主题/网络营销专业学什么课程
  • 代做毕设的网站/上海关键词推广公司
  • 企业网站优化之如何做需求分析/可以免费打开网站的软件