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

算法训练营day33(补),复习二叉树1

// 889. 根据前序和后序遍历构造二叉树

//   前序中左右 后序遍历左右中

func constructFromPrePost(preorder []int, postorder []int) *TreeNode {

  if len(preorder) == 0 {

    return nil

  }

  root := &TreeNode{}

  root.Val = preorder[0]

  //前序数组去掉root节点

  preorder = preorder[1:]

  //后序数组去掉root节点

  postorder = postorder[:len(postorder)-1]

  //如果前序数组只剩1个,说明只有左子树或者右子树

  if len(postorder) == 1 {

    root.Left = &TreeNode{Val: postorder[0]}

    return root

  }

  index := 0

  for ; index < len(postorder); index++ {

    if postorder[index] == preorder[0] {

      break

    }

  }

  if len(postorder) > 1 {

    leftPostorder := postorder[:index+1]

    rightPostorder := postorder[index+1:]

    leftPreorder := preorder[:index+1]

    rightPreorder := preorder[index+1:]

    root.Left = constructFromPrePost(leftPreorder, leftPostorder)

    root.Right = constructFromPrePost(rightPreorder, rightPostorder)

  }

  return root

}

http://www.lryc.cn/news/304087.html

相关文章:

  • k8s-权限管理
  • 四.QT5工具安装和环境变量的配置
  • 为什么需要MDL锁
  • nuxt项目搭建
  • RocketMQ消息队列(上)
  • 【机器学习】机器学习是什么以及有哪些应用场景
  • vue3 #跨组件通信
  • 【AI绘画工具有哪些?】讲解
  • 在Vue中使用TypeScript时 props指定枚举类型
  • 快速将excel/word表格转换为web页面(html)的方法
  • 想高薪就业鸿蒙HarmonyOS 开发岗位,到底该学习些啥?
  • Java中的建造者模式
  • 机器学习面试:逻辑回归与朴素贝叶斯区别
  • 数据结构之线性表
  • 记录解决uniapp使用uview-plus在vue3+vite+ts项目中打包后样式不能显示问题
  • 三年功能测试,测试工作吐槽
  • 0206-1-网络层
  • 以 All-in-One 模式安装 KubeSphere时避坑
  • Android T 远程动画显示流程其二——动画的添加流程(更新中)
  • Pytorch-SGD算法解析
  • 物联网土壤传感器简介
  • MySQL索引面试题(高频)
  • SouthLeetCode-打卡24年02月第2周
  • Rust CallBack的几种写法
  • Redis突现拒绝连接问题处理总结
  • css中选择器的优先级
  • python3字符串内建方法split()心得
  • html的列表标签
  • 【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture04反向传播
  • PyTorch使用Tricks:学习率衰减 !!