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

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]

思路:

//preorder:中左右 inorder 左中右
// preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
// 不从代码角度,形象划分过程如下:
//       3                       3
//   9       15 20 7       9           20
//                                 15       7
// 前序遍历中下一个节点和上一个节点关系:是其左孩子 是其右孩子  和上一个节点没关系,自己是一个独立根节点
// 如何判断关系呢?在上一个节点划分出来的左边能找到下一个节点就是左孩子...
int i=0;
    public TreeNode buildTree(int[] preorder, int[] inorder) {
        return search(preorder,inorder,0,inorder.length);
    }
    public TreeNode search(int[] preorder, int[] inorder,int left,int right){
        if(i>=preorder.length)
            return null;
        TreeNode node=new TreeNode(preorder[i]);
        int j=left;
        boolean flag=false;
        for(j=left;j<right;j++){
            if(inorder[j]==preorder[i]){
                i++;
                flag=true;
                break;
            }
        }
        if(!flag) // 不是左|右孩子 左|右孩子设为null
            return null;
        node.left=search(preorder,inorder,left,j);// 看是否是其左孩子
        node.right=search(preorder,inorder,j+1,right); // 看是否是其右孩子
        return node; // 是独立节点
    }


http://www.kler.cn/a/443464.html

相关文章:

  • 【机器学习:四、多输入变量的回归问题】
  • 快速学习 pytest 基础知识
  • 随机置矩阵列为0[矩阵乘法pytorch版]
  • STM32之CAN通讯(十一)
  • 批量写入数据到数据库,卡顿怎么解决
  • 如何查看服务器上的MySQL/Redis等系统服务状态和列表
  • UE4_用户控件_1_滑块控制图像颜色的变化
  • FFmpeg 主要结构体剖析
  • YOLOv9-0.1部分代码阅读笔记-callbacks.py
  • 新质生产力8大产业链
  • 使用k6进行Redis基准测试
  • VMware ubuntu虚拟机网络配置
  • leecode1049.最后一块石头的重量||
  • 如何在 Spring Boot 应用程序中使用 WireMock 模拟外部 rest api 调用进行测试
  • 沙县小吃点餐系统|Java|SSM|JSP|
  • 深度学习实战之超分辨率算法(tensorflow)——ESPCN
  • 【C#】WebSoket 演示(使用websocket-sharp库)
  • 【FFmpeg 教程 一】截图
  • aws(学习笔记第十八课) 使用aws cdk(python)进行部署
  • WebPlotDigitizer 使用指南
  • 【Linux网络编程】第十二弹---构建与优化HTTP请求处理:从HttpRequest到HttpServer的实战
  • 信息安全概论
  • Web应用中的XSS防护实践
  • 位运算符说明
  • LWIP协议:三次握手和四次挥手、TCP/IP模型
  • 解释工厂模式