zoukankan      html  css  js  c++  java
  • LeetCode笔记整理2 从中序与前(后)序列构造二叉树

    从中序与前(后)序列构造二叉树

    遍历顺序

    前序

    • 先遍历根节点
    • 随后递归遍历左子树
    • 随后递归遍历右子树

    特点:
    第一个节点一定为树的根节点

    中序

    • 先递归遍历左子树
    • 随后遍历根节点
    • 最后递归遍历右子树

    特点:

    • 根节点左边为左子树
    • 根节点右边为右子树

    后序

    • 先递归遍历左子树
    • 随后递归遍历右子树
    • 最后遍历根节点

    特点:
    最后一个节点一定为树的根节点

    递归

    只要我们在中序遍历中定位到根节点,那么我们就可以分别知道左子树和右子树中的节点数目。由于同一颗子树的前序遍历和中序遍历的长度显然是相同的,因此我们就可以对应到前序遍历的结果中,对上述形式中的所有左右括号进行定位。

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

    前序遍历 preorder = [3,9,20,15,7]
    中序遍历 inorder = [9,3,15,20,7]

    function TreeNode(val) {
        this.val = val;
        this.left = this.right = null;
    }
    var buildTree = function(preorder, inorder) {
        if (inorder.length === 0){
            return null
        }
        var root = new TreeNode(preorder[0])
        var mid = inorder.indexOf(preorder[0])
        root.left = buildTree(preorder.slice(1, mid + 1), inorder.slice(0, mid))
        root.right = buildTree(preorder.slice(mid+1), inorder.slice(mid+1))
        return root
    };
    

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

    中序遍历 inorder = [9,3,15,20,7]
    后序遍历 postorder = [9,15,7,20,3]

    function TreeNode(val){
        this.val = val
        this.left = this.right = null;
    }
    var buildTree = function(inorder, postorder) {
        if(postorder.length === 0)
            return null
        var val = postorder[postorder.length - 1]
        var root = new TreeNode(val)
        var mid = inorder.indexOf(val)
        root.left = buildTree(inorder.slice(0, mid), postorder.slice(0, mid))
        root.right = buildTree(inorder.slice(mid+1), postorder.slice(mid, postorder.length - 1))
        return root
    };
    
  • 相关阅读:
    进阶 | 手把手教你模拟键盘和鼠标操作ActionChains
    做web自动化时,定位元素常用方法有哪些?
    C# 自定义控件无法查看视图设计:文件中的类都不能进行设计,因此未能为该文件显示设计器
    Windows Server时间服务器配置方法
    MySQL 8.0主从(MasterSlave)配置
    VMware VSphere Client克隆虚拟机
    VMware vSphere Client给虚拟机增加硬盘
    nginx负载+mysql8.0双主实现
    Java
    关于awvs和nessus的api的说明
  • 原文地址:https://www.cnblogs.com/xiaoxu-xmy/p/13661590.html
Copyright © 2011-2022 走看看