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

做多语言网站教程google收录查询

做多语言网站教程,google收录查询,做网站的怎么赚钱,asp网站编辑教程1. 题目 描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。 提示: 1.vin.length pre.length 2.pre 和 vin…

1. 题目

描述

给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。

例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。

提示:

1.vin.length == pre.length

2.pre 和 vin 均无重复元素

3.vin出现的元素均出现在 pre里

4.只需要返回根结点,系统会自动输出整颗树做答案对比

数据范围:n ≤2000,节点的值 -10000≤val≤10000

要求:空间复杂度 O(n),时间复杂度 O(n)

示例1

输入:

[1,2,4,7,3,5,6,8],[4,7,2,1,5,3,8,6]

返回值:

{1,2,3,4,#,5,6,#,7,#,#,8}

说明:

返回根节点,系统会输出整颗二叉树对比结果,重建结果如题面图示    

示例2

输入:

[1],[1]

返回值:

{1}

示例3

输入:

[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]

返回值:

{1,2,5,3,4,6,7}

2. 解题思路

本题需要通过二叉树的前序遍历结果与中序遍历结果构建出二叉树来,因此需要先了解二叉树前序遍历与中序遍历的规律:

1)前序遍历,根节点是在最前面;

2)中序遍历,根节点是在中间位置(即:根节点元素前面的为左子树,后面的为右子树)。

了解了规律,再来看思路:

根据思路,对应的递推公式如下:

有了递推公式,就可以很方便的写出代码。

如果文字描述的不太清楚,你可以参考视频的详细讲解。

  • Python版本:哔哩哔哩_bilibilihttps://www.bilibili.com/cheese/play/ep1372249

  • Java版本:数据结构笔试面试算法-Java语言版_哔哩哔哩_bilibili数据结构笔试面试算法-Java语言版,bilibili课堂,哔哩哔哩课堂,哔哩哔哩,Bilibili,B站,弹幕https://www.bilibili.com/cheese/play/ep1367357

  • Golang版本:哔哩哔哩_bilibilihttps://www.bilibili.com/cheese/play/ep1364782

3. 编码实现

核心代码如下:

type TreeNode struct {Val   intLeft  *TreeNodeRight *TreeNode
}/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param preOrder int整型一维数组* @param vinOrder int整型一维数组* @return TreeNode类*/
func reConstructBinaryTree(pre []int, vin []int) *TreeNode {// write code here// 2. 递归终止条件(pre、vin长度一样,只需要判断一个即可)if len(pre) == 0 {return nil}// 1. 问题分解(递推公式)// 1.1 根节点(前序遍历的第一个值)root := &TreeNode{Val: pre[0]}// 1.2 根节点在中序遍历中的位置index := getIndex(vin, pre[0])// 1.3 以根节点索引为分割线,将数组pre、vin分为左右两部分root.Left = reConstructBinaryTree(pre[1:index+1], vin[:index])   //左部分构成左子树(切片截取:左闭右开)root.Right = reConstructBinaryTree(pre[index+1:], vin[index+1:]) //右部分构成右子树return root
}func getIndex(vin []int, v int) int {for index, data := range vin {if data == v {return index //根据题目:pre 和 vin 均无重复元素,因此找到元素即可返回}}return 0
}

具体完整代码你可以参考下面视频的详细讲解。

  • Python版本:数据结构笔试面试算法-Python语言版_哔哩哔哩_bilibili数据结构笔试面试算法-Python语言版,bilibili课堂,哔哩哔哩课堂,哔哩哔哩,Bilibili,B站,弹幕https://www.bilibili.com/cheese/play/ep1372249

  • Java版本:数据结构笔试面试算法-Java语言版_哔哩哔哩_bilibili数据结构笔试面试算法-Java语言版,bilibili课堂,哔哩哔哩课堂,哔哩哔哩,Bilibili,B站,弹幕https://www.bilibili.com/cheese/play/ep1367357

  • Golang版本:数据结构笔试面试算法-Go语言版_哔哩哔哩_bilibili数据结构笔试面试算法-Go语言版,bilibili课堂,哔哩哔哩课堂,哔哩哔哩,Bilibili,B站,弹幕https://www.bilibili.com/cheese/play/ep1364782

4.小结

根据二叉树的前序遍历结果与中序遍历结果构建二叉树可以通过以下方法完成:

  1. 创建根节点(跟节点的值为前序遍历的第一个数);

  2. 查找根节点在中序遍历中的位置;

  3. 以根节点索引为分割线,将前序遍历数组pre、中序遍历数组vin分为左右两部分;左部分构成根节点的左子树,右部分构成根节点的右子树。


《数据结构与算法》深度精讲课程正式上线啦!七大核心算法模块全解析:

          ✅   链表

          ✅   二叉树

          ✅   二分查找、排序

          ✅   堆、栈、队列

          ✅   回溯算法

          ✅   哈希算法

          ✅   动态规划

无论你是备战笔试面试、提升代码效率,还是突破技术瓶颈,这套课程都将为你构建扎实的算法思维底座。🔥立即加入学习打卡,与千名开发者共同进阶!

  • Python编码实现:哔哩哔哩_bilibilihttps://www.bilibili.com/cheese/play/ss897667807

  • Java编码实现:哔哩哔哩_bilibilihttps://www.bilibili.com/cheese/play/ss161443488

  • Golang编码实现:哔哩哔哩_bilibilihttps://www.bilibili.com/cheese/play/ss63997

对于二叉树的相关算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。具体也可以参考视频详细讲解。

今日佳句:日出江花红胜火,春来江水绿如蓝。

http://www.dtcms.com/wzjs/414842.html

相关文章:

  • 建立网站视频教程拼多多代运营公司十大排名
  • 做学校网站的内容域名注册查询官网
  • 做名宿比较好的网站线上推广渠道有哪些
  • 北京南站停车场收费标准本地网络seo公司
  • mc做弊端网站seo网站优化推荐
  • 汕头市建筑信息网站百度收录最新方法
  • web网站开发的好书济南特大最新消息
  • 湖南医院响应式网站建设企业昆明seo工资
  • 做网站平台公司app推广好做吗
  • 宣传网站建设方案模板个人免费自助建站网站
  • 戴尔网站建设和维护博客营销
  • 弹幕网站用什么做搜狗收录
  • 帮人做网站赚钱今天最新的新闻
  • 交互设计要学什么扬州整站seo
  • 网站建设需要多少天时间站长工具端口检测
  • 做网站游戏总结的例文南宁网站优化
  • 建设网站简单教程网站系统开发
  • 网站制作费计入哪个科目中山疫情最新消息
  • 沈阳做网站的谷歌海外推广
  • 长春网站制作工具爱站长
  • 网站开发学多久市场营销策略有哪些
  • 什么网站做ppt好无人在线观看高清视频单曲直播
  • 广西专业做网站的公司seo外包服务
  • 附近网站建设公司百度手机浏览器下载
  • 考试网站模版微信软文是什么
  • 网站加速器怎么开深圳seo优化方案
  • 外贸怎么做网站外链上海seo优化
  • 高端营销型网站seo和sem的区别
  • 做网站 数据库门户网站怎么做
  • 教师网站建设机培训体会免费下载百度推广代理怎么加盟