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

如何做公司网站制作泸州市住房和城乡建设局网站

如何做公司网站制作,泸州市住房和城乡建设局网站,去掉wordpress 上一篇,如何去做一个网站文章目录 从前序与中序遍历序列构造二叉树我的思路网上思路 总结 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示…

文章目录

    • 从前序与中序遍历序列构造二叉树
      • 我的思路
      • 网上思路
    • 总结

从前序与中序遍历序列构造二叉树

给定两个整数数组 preorderinorder ,其中 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]

我的思路
递归
网上思路

我的思路

var buildTree = function (preorder, inorder) {const build = (preStart, inStart, inEnd) => {if (inStart > inEnd) return null; // 终止条件:没有节点要构建了// 先序遍历中的第一个节点就是当前子树的根节点const rootVal = preorder[preStart];const root = new TreeNode(rootVal);// 在中序遍历中找到根节点的位置,以此划分左右子树const index = inorder.indexOf(rootVal, inStart, inEnd + 1);// 递归构建左子树和右子树root.left = build(preStart + 1, inStart, index - 1);root.right = build(preStart + index - inStart + 1, index + 1, inEnd);return root;};return build(0, 0, inorder.length - 1);
}

讲解

  1. 先序遍历:先序遍历的顺序是根节点 -> 左子树 -> 右子树。这意味着先序遍历的第一个元素总是树的根节点。
  2. 中序遍历:中序遍历的顺序是左子树 -> 根节点 -> 右子树。通过中序遍历,可以明确知道根节点在哪些元素的左侧,哪些元素的右侧,从而区分左右子树。
  3. 递归构建:知道了根节点,就可以在中序遍历中找到根节点的位置,这个位置将中序序列分成两部分,左边是左子树的中序遍历,右边是右子树的中序遍历。同时,根据先序遍历中根节点之后的元素个数,可以确定左右子树的先序遍历范围。然后递归地在左右子树的先序和中序序列中构建子树。

网上思路

var buildTree = function (preorder, inorder) {if (preorder.length === 0 || inorder.length === 0) {return null;}const root = new TreeNode(preorder[0]);const stack = [root];let inorderIndex = 0;for (let i = 1; i < preorder.length; i++) {const node = new TreeNode(preorder[i]);// 将栈顶元素与当前节点进行连接let topNode = stack[stack.length - 1];// 如果栈顶元素的值与中序遍历的当前值相同,则说明当前节点是栈顶元素的右子节点if (topNode.val === inorder[inorderIndex]) {while (stack.length > 0 && stack[stack.length - 1].val === inorder[inorderIndex]) {topNode = stack.pop();inorderIndex++;}topNode.right = node; // 连接到右子节点} else {topNode.left = node; // 连接到左子节点}// 将当前节点入栈stack.push(node);}return root;
}

讲解

  1. 首先检查 preorder 和 inorder 数组是否为空。
  2. 创建根节点并将其入栈。
  3. 遍历 preorder 数组,从第二个元素开始。
  4. 对于每个新节点,检查栈顶元素是否与当前 inorder 中的值相同:
  5. 如果相同,则弹出栈顶元素,并继续检查,直到栈顶元素与 inorder 中的值不同。
  6. 如果不同,则将新节点作为栈顶元素的左子节点。
  7. 最后,将新节点入栈。

总结

现在看来,栈也是一个好的解题思路,明天可以试试

http://www.yayakq.cn/news/265105/

相关文章:

  • 开网站赚50万做做网站应该用什么语言来开发
  • wap网站现在还有什么用怎么做校园表白墙网站
  • 做淘客网站的新闻源
  • 非常成功的网站wordpress使用非80端口
  • 网站进入百度观察期镇江大港属于哪个区
  • 国内优秀网站案例网站下雪的效果怎么做的
  • 凤冈建设局网站wordpress特色主题公园
  • 如何让百度收录自己的网站国外机械做的好的网站
  • 建站培训雄安专业网站建设
  • 开网站供免费下载wordpress 上传apk
  • asp网站伪静态文件下载个人网站如何制作
  • 中国中小企业网站wordpress笔记本主题下载失败
  • 潍坊网站建设中公乐都网站建设
  • 移动宽带到期续费流程网站缺陷和优化的例子
  • 视频 播放网站怎么做的做彩票网站需要什么技术
  • 班级网站页面设计使用免费的代码做网站
  • 机关单位网站建设管理制度泰安软件开发公司哪家好
  • 杭州住房和城乡建设局网站公司软件网站建设
  • 成都网站制作028net如何做地方网站推广
  • 同德县网站建设公司免签支付 wordpress
  • 农机局网站建设方案建设一个网站项目预算
  • 网站隐私条款模板湖北省两学一做网站
  • wordpress怎么样建站内战千锋教育招聘
  • 合川网站建设免费注册企业网站
  • 湖北专业网站建设产品介绍网站建设有趣名称
  • 如何建微网站古色古香 网站模板
  • 电商网站用什么框架做网站建设会用什么软件有哪些
  • 张家港手机网站建设公司网站可以自己做
  • 天河网站建设平台360导航网址主页
  • 网站建设解决方以下是付费推广方式是