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

公司网站建设的系统功能需求分析用群晖如何做公司网站

公司网站建设的系统功能需求分析,用群晖如何做公司网站,免费申请一个网站,网页的制作方法文章目录 说明题目 144. 二叉树的前序遍历题解 题目 94. 二叉树的中序遍历题解 题目 145. 二叉树的后序遍历题解 题目 105. 从前序与中序遍历序列构造二叉树题解 题目 106. 从中序与后序遍历序列构造二叉树题解 #x1f64a; 前言#xff1a;本文章为瑞_系列专栏之《刷题》的… 文章目录 说明题目 144. 二叉树的前序遍历题解 题目 94. 二叉树的中序遍历题解 题目 145. 二叉树的后序遍历题解 题目 105. 从前序与中序遍历序列构造二叉树题解 题目 106. 从中序与后序遍历序列构造二叉树题解 前言本文章为瑞_系列专栏之《刷题》的力扣LeetCode系列主要以力扣LeetCode网的题进行解析与分享。本文仅供大家交流、学习及研究使用禁止用于商业用途违者必究 说明 本文主要是配合《瑞_数据结构与算法_二叉树》对二叉树的知识进行提升和拓展 题目 144. 二叉树的前序遍历 原题链接Leetcode144. 二叉树的前序遍历 给你二叉树的根节点 root 返回它节点值的前序遍历。 示例 1 输入root [1,null,2,3] 输出[1,2,3] 示例 2 输入root [] 输出[] 示例 3 输入root [1] 输出[1] 示例 4 输入root [1,2] 输出[1,2] 示例 5 输入root [1,null,2] 输出[1,2] 提示 树中节点数目在范围 [0, 100] 内-100 Node.val 100 进阶递归算法很简单你可以通过迭代算法完成吗 题解 /*** 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 preorderTraversal(TreeNode root) {/** 栈*/LinkedListTreeNode stack new LinkedList();/** 代表当前节点*/TreeNode current root;/** 最近一次弹栈的元素*/TreeNode pop null;ListInteger result new ArrayList();while (!stack.isEmpty() || current ! null) {if (current ! null) {stack.push(current);// 待处理左子树result.add(current.val);current current.left;} else {TreeNode peek stack.peek();// 没有右子树if (peek.right null) {// 获取最近一次弹栈的元素pop stack.pop();}// 右子树处理完成else if (peek.right pop) {// 获取最近一次弹栈的元素pop stack.pop();}// 待处理右子树else {current peek.right;}}}return result;} }题目 94. 二叉树的中序遍历 原题链接Leetcode94. 二叉树的中序遍历 给定一个二叉树的根节点 root 返回 它的中序遍历 。 示例 1 输入root [1,null,2,3] 输出[1,3,2] 示例 2 输入root [] 输出[] 示例 3 输入root [1] 输出[1] 提示 树中节点数目在范围 [0, 100] 内-100 Node.val 100 进阶: 递归算法很简单你可以通过迭代算法完成吗 题解 /*** 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 inorderTraversal(TreeNode root) {/** 栈*/LinkedListTreeNode stack new LinkedList();/** 代表当前节点*/TreeNode current root;/** 最近一次弹栈的元素*/TreeNode pop null;ListInteger result new ArrayList();while (!stack.isEmpty() || current ! null) {if (current ! null) {stack.push(current);// 待处理左子树current current.left;} else {TreeNode peek stack.peek();// 没有右子树if (peek.right null) {result.add(peek.val);// 获取最近一次弹栈的元素pop stack.pop();}// 右子树处理完成else if (peek.right pop) {// 获取最近一次弹栈的元素pop stack.pop();}// 待处理右子树else {result.add(peek.val);current peek.right;}}}return result;} }题目 145. 二叉树的后序遍历 原题链接Leetcode145. 二叉树的后序遍历 示例 1 输入root [1,null,2,3] 输出[3,2,1] 示例 2 输入root [] 输出[] 示例 3 输入root [1] 输出[1] 说明 树中节点的数目在范围 [0, 100] 内-100 Node.val 100 进阶递归算法很简单你可以通过迭代算法完成吗 题解 /*** 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 postorderTraversal(TreeNode root) {/** 栈*/LinkedListTreeNode stack new LinkedList();/** 代表当前节点*/TreeNode current root;/** 最近一次弹栈的元素*/TreeNode pop null;ListInteger result new ArrayList();while (!stack.isEmpty() || current ! null) {if (current ! null) {stack.push(current);// 待处理左子树current current.left;} else {TreeNode peek stack.peek();// 没有右子树if (peek.right null) {// 获取最近一次弹栈的元素pop stack.pop();result.add(pop.val);}// 右子树处理完成else if (peek.right pop) {// 获取最近一次弹栈的元素pop stack.pop();result.add(pop.val);}// 待处理右子树else {current peek.right;}}}return result;} }题目 105. 从前序与中序遍历序列构造二叉树 原题链接Leetcode105. 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder 其中 preorder 是二叉树的先序遍历 inorder 是同一棵树的中序遍历请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7]输出: [3,9,20,null,null,15,7]示例 2: 输入: preorder [-1], inorder [-1]输出: [-1]提示: 1 preorder.length 3000inorder.length preorder.length-3000 preorder[i], inorder[i] 3000preorder 和 inorder 均 无重复 元素inorder 均出现在 preorderpreorder 保证 为二叉树的前序遍历序列inorder 保证 为二叉树的中序遍历序列 题解 思路 1. 前序遍历preorder的第一个值肯定是根节点。通过preorder寻找根节点。2. 中序遍历inorder在根节点之前的值是根节点的左子树部分而之后的值是根节点的右子树部分。通过inorder区分左右子树部分。3. 通过循环inorder使用根节点确定中序遍历的左右子树部分、前序遍历的左右子树部分。4. 根据1.2.3.继续分为子问题递归解决。/*** 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[] preOrder, int[] inOrder) {if (preOrder.length 0) {return null;}// 创建根节点int rootValue preOrder[0];TreeNode root new TreeNode(rootValue);// 区分左右子树for (int i 0; i inOrder.length; i) {if (inOrder[i] rootValue) {// 0 ~ i-1 左子树// i1 ~ inOrder.length -1 右子树int[] inLeft Arrays.copyOfRange(inOrder, 0, i); int[] inRight Arrays.copyOfRange(inOrder, i 1, inOrder.length); int[] preLeft Arrays.copyOfRange(preOrder, 1, i 1);int[] preRight Arrays.copyOfRange(preOrder, i 1, preOrder.length); root.left buildTree(preLeft, inLeft); root.right buildTree(preRight, inRight); break;}}return root;} }瑞可以使用HashMap优化以及新数组可以通过索引坐标参数传递优化。具体可见本系列HashMap章节后续更新 题目 106. 从中序与后序遍历序列构造二叉树 原题链接Leetcode106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder 其中 inorder 是二叉树的中序遍历 postorder 是同一棵树的后序遍历请你构造并返回这颗 二叉树 。 示例1 输入inorder [9,3,15,20,7], postorder [9,15,7,20,3]输出[3,9,20,null,null,15,7]示例2 输入inorder [-1], postorder [-1]输出[-1]提示: 1 inorder.length 3000 postorder.length inorder.length-3000 inorder[i], postorder[i] 3000 inorder 和 postorder 都由 不同 的值组成postorder 中每一个值都在 inorder 中inorder 保证是树的中序遍历postorder 保证是树的后序遍历 题解 思路 1. 后序遍历postorder的最后一个元素就是根节点。通过postorder寻找根节点。2. 中序遍历inorder在根节点之前的值是根节点的左子树部分而之后的值是根节点的右子树部分。通过inorder区分左右子树部分。3. 通过循环inorder使用根节点确定中序遍历的左右子树部分、后序遍历的左右子树部分。4. 根据1.2.3.继续分为子问题递归解决。/*** 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.length 0) {return null;}// 根int rootValue postOrder[postOrder.length - 1];TreeNode root new TreeNode(rootValue);// 切分左右子树for (int i 0; i inOrder.length; i) {if (inOrder[i] rootValue) {int[] inLeft Arrays.copyOfRange(inOrder, 0, i);int[] inRight Arrays.copyOfRange(inOrder, i 1, inOrder.length);int[] postLeft Arrays.copyOfRange(postOrder, 0, i);int[] postRight Arrays.copyOfRange(postOrder, i, postOrder.length - 1);root.left buildTree(inLeft, postLeft);root.right buildTree(inRight, postRight);break;}}return root;} }本文是博主的粗浅理解可能存在一些错误或不完善之处如有遗漏或错误欢迎各位补充谢谢 如果觉得这篇文章对您有所帮助的话请动动小手点波关注你的点赞收藏⭐️转发评论都是对博主最好的支持~
http://www.dnsts.com.cn/news/87724.html

相关文章:

  • 济南网站建设招聘wordpress 增加 SEO
  • 怎样直接输入网址打开网站口碑好的邵阳网站建设
  • 纵横网站中国建设银行贵州省分行网站
  • 免费的自学网站大全百度关键词收录
  • 山东省建设工程招标中心网站海口网站优化
  • 网站用户维度门户网站系统程序
  • 企业建站公司电话表格制作教程入门视频
  • 回收做哪个网站好些简历模板免费下载wps
  • php网站开发占比企业网站建设销售话术
  • 无锡网站建设 app湖南长沙微信平台号
  • 淄博网站建设公司羊肉片机广西一站网网络技术集团有限公司
  • 网站推广计划包括哪些网站后台管理系统模板html
  • qq空间做淘宝客网站wordpress快速发布内容
  • 广州网站开发哪家好制作网站图片不显示
  • 宜宾网站建设88souui设计公司哪家好
  • 云南专业网站优化佛山广告设计公司排名
  • 网站开发预算表wordpress主题导入Demo
  • 广安企业网站建设如何创作自己的平台
  • 渝中集团网站建设html5手机网站建设
  • 公司手机网站设计公司官网优化
  • 做网站维护有没有前途猪价大涨已成定局
  • 如何刷网站流量网站建设设置分享功能
  • 深圳网站. 方维网络手机网站功能开发方案
  • 建设集团网站公司做电子商务网站需要学什么
  • 笑话网站域名淘客软件自动做网站?
  • 做网站需要哪些硬件服务好的网站建设平台
  • php网站开发业务阳泉 网站建设合作
  • 淄博好的建网站公司大型网站 建设意义
  • 做球衣外贸用什么网站福田做商城网站建设哪家服务周到
  • 如和做视频解析网站网站评论怎么做