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

海珠建网站公司全国精品课程建设网站

海珠建网站公司,全国精品课程建设网站,电商平面设计工作内容,做网站的公司算外包公司吗文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题#xff1a;翻转二叉树以匹配前序遍历 出处#xff1a;971. 翻转二叉树以匹配前序遍历 难度 5 级 题目描述 要求 给定一个二叉树的根结点 root \texttt{roo… 文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题翻转二叉树以匹配前序遍历 出处971. 翻转二叉树以匹配前序遍历 难度 5 级 题目描述 要求 给定一个二叉树的根结点 root \texttt{root} root二叉树中有 n \texttt{n} n 个结点每个结点都有一个 1 \texttt{1} 1 到 n \texttt{n} n 之间的值且不同结点的值各不相同。另外给定一个由 n \texttt{n} n 个值组成的行程序列 voyage \texttt{voyage} voyage表示预期的二叉树前序遍历结果。 通过交换结点的左右子树可以翻转该二叉树中的任意结点。例如翻转结点 1 \texttt{1} 1 的效果如下 请翻转最少的树中结点使得二叉树的前序遍历与预期的遍历行程 voyage \texttt{voyage} voyage 相匹配。 返回翻转的所有结点的值的列表。可以按任何顺序返回答案。如果不能则返回列表 [-1] \texttt{[-1]} [-1]。 示例 示例 1 输入 root [1,2], voyage [2,1] \texttt{root [1,2], voyage [2,1]} root  [1,2], voyage  [2,1] 输出 [-1] \texttt{[-1]} [-1] 解释翻转结点无法令前序遍历匹配预期行程。 示例 2 输入 root [1,2,3], voyage [1,3,2] \texttt{root [1,2,3], voyage [1,3,2]} root  [1,2,3], voyage  [1,3,2] 输出 [1] \texttt{[1]} [1] 解释翻转结点 1 \texttt{1} 1 交换结点 2 \texttt{2} 2 和 3 \texttt{3} 3使得前序遍历可以匹配预期行程。 示例 3 输入 root [1,2,3], voyage [1,2,3] \texttt{root [1,2,3], voyage [1,2,3]} root  [1,2,3], voyage  [1,2,3] 输出 [] \texttt{[]} [] 解释前序遍历已经匹配预期行程所以不需要翻转结点。 数据范围 树中结点数目为 n \texttt{n} n n voyage.length \texttt{n} \texttt{voyage.length} nvoyage.length 1 ≤ n ≤ 100 \texttt{1} \le \texttt{n} \le \texttt{100} 1≤n≤100 1 ≤ Node.val, voyage[i] ≤ n \texttt{1} \le \texttt{Node.val, voyage[i]} \le \texttt{n} 1≤Node.val, voyage[i]≤n树中的所有值各不相同 voyage \texttt{voyage} voyage 中的所有值各不相同 解法 思路和算法 二叉树的前序遍历的方法为依次遍历根结点、左子树和右子树对于左子树和右子树使用同样的方法遍历。对于每个结点如果不翻转该结点则遍历该结点之后依次遍历左子树和右子树如果翻转该结点则遍历该结点之后依次遍历右子树和左子树。由于题目要求翻转的结点数最少因此只有当必须翻转结点的时候才翻转结点。当遍历到一个结点时其子结点值和预期行程中的下一个值可能有以下情况。 当前结点的左子结点为空或者左子结点值和预期行程中的下一个值相同此时不需要翻转当前结点。 当前结点的左子结点不为空且左子结点值和预期行程中的下一个值不同如果不翻转当前结点则下一个访问的结点是左子结点无法匹配预期行程此时需要翻转当前结点。翻转当前结点之后不能保证匹配预期行程而是需要访问原右子结点判断当前结点的原右子结点值是否和预期行程中的下一个值相同可能有以下两种情况。 如果原右子结点值和预期行程中的下一个值相同则翻转当前结点之后原右子结点匹配预期行程继续遍历判断其余的结点是否匹配预期行程。 如果原右子结点值和预期行程中的下一个值不同则翻转当前结点之后仍无法匹配预期行程。由于当前结点无论是否翻转都无法匹配预期行程因此无法通过翻转二叉树中的结点匹配预期行程。 根据上述分析可以在二叉树前序遍历的基础上做修改得到翻转的结点值列表。从根结点开始前序遍历二叉树遍历过程中维护翻转的结点值列表并维护状态值记录是否存在翻转方案不存在翻转方案表示无法通过翻转二叉树中的结点匹配预期行程初始时翻转的结点值列表为空状态值为存在翻转方案具体做法如下。 如果当前结点为空或者状态值为不存在翻转方案则直接返回。 如果当前结点值和预期行程中的当前值不同则将翻转的结点值列表清空然后将 − 1 -1 −1 加入翻转的结点值列表并将状态值设为不存在翻转方案然后返回。 根据当前结点的左右子结点判断当前结点是否需要翻转并决定遍历左右子树的顺序。 如果当前结点的左子结点为空或者左子结点值和预期行程中的下一个值相同则不需要翻转当前结点依次对左子树和右子树前序遍历。 否则需要翻转当前结点将当前结点值加入翻转的结点值列表依次对右子树和左子树前序遍历。 遍历结束之后即可得到翻转的结点值列表。如果存在翻转方案则列表中的元素为所有需要翻转的结点值特别地当列表为空时表示原二叉树已经匹配预期行程因此不需要翻转任何结点如果不存在翻转方案则列表中只有一个元素 − 1 -1 −1。 代码 class Solution {ListInteger flips;int[] voyage;int n;int index;boolean possible;public ListInteger flipMatchVoyage(TreeNode root, int[] voyage) {this.flips new ArrayListInteger();this.voyage voyage;this.n voyage.length;this.index 0;this.possible true;preorder(root);return flips;}public void preorder(TreeNode node) {if (node null || !possible) {return;}if (node.val ! voyage[index]) {flips.clear();flips.add(-1);possible false;return;}index;TreeNode left node.left, right node.right;if (left null || left.val voyage[index]) {preorder(left);preorder(right);} else {flips.add(node.val);preorder(right);preorder(left);}} }复杂度分析 时间复杂度 O ( n ) O(n) O(n)其中 n n n 是二叉树的结点数。每个结点都被访问一次。 空间复杂度 O ( n ) O(n) O(n)其中 n n n 是二叉树的结点数。空间复杂度主要是递归调用的栈空间取决于二叉树的高度最坏情况下二叉树的高度是 O ( n ) O(n) O(n)。注意返回值不计入空间复杂度。
http://www.pierceye.com/news/177557/

相关文章:

  • 网站的建站方案网络科技有限公司
  • ps做图游戏下载网站有哪些内容广州网站(建设信科网络)
  • 专做皮鞋销售网站seo网站优化方案
  • 街区网站建设的意义做外贸网站 怎么收钱
  • 北京网站制作公司兴田德润可信赖给钱做h事都行的网站名
  • 合肥珍岛公司做网站推广怎么样如何查询网站备案进度
  • 源码论坛网站门户网站的含义
  • 零食店网站构建策划报告高级程序员培训
  • 重庆大足网站制作公司百度app智能小程序
  • flash网站与html5discuz做的网站上传到网站空间的文件
  • 做网站会什么网页设计类型与风格
  • 怎么做网站用于推广注册公司每年需要缴纳什么费用
  • 揭阳有哪家网站制作公司wordpress数据库备份恢复
  • 站长工具友链查询中国网站建设公司图片
  • 做原型的素材网站国内wordpress主题商
  • 合肥的电商网站设计wordpress 相册 链接
  • 试玩平台网站怎么做网站建设推荐中企动力
  • 衡水做网站建设台州网站建设选浙江华企
  • 某集团网站建设规划书用flash做的经典网站
  • 企业网站用什么做一个空间怎么放两个网站吗
  • 58同城长沙回收网站建设长春seo推广
  • 景区网站建设的意义女生学计算机应用技术可以做什么
  • 做律师网站的公司天津公司网站制作
  • 上海建设摩托车官方网站招聘网站数建设
  • 自己制作一个网站需要什么软件安吉网站制作
  • 如何设计服装网站首页网站建设比较好的公司
  • 微信网站的链接标志图片如何做公众号如何创建
  • 建站公司建的网站能改动吗怎样设置默认网站
  • 高并发电商网站开发辽宁省朝阳市做网站
  • 公司做网站有用吗合肥企业快速建站