当前位置:主页 > 查看内容

JS实现二叉树的重建

发布时间:2021-08-10 00:00| 位朋友查看

简介:文章目录 1.根据前序中序 2.根据后序中序 function TreeNode(x) { this.val x; this.left null; this.right null;} 前序or后序用来确认根节点 前序中根节点在第一个后序中根节点在最后一个 利用根节点将 中序 遍历数组分割为左子树、右子树 相关数据。 对于……

function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
}
  1. 前序or后序用来确认根节点
    前序中,根节点在第一个,后序中根节点在最后一个
  2. 利用根节点将中序遍历数组分割为左子树、右子树 相关数据。
    对于中序遍历,根节点左边的节点即左子树,根节点右边的节点即右子树。

1.根据前序+中序


function creatTree(pre, vin)
{
    if(pre.length === 0 || vin.length === 0){
        return null;
    }
    //创建根节点,根节点是前序遍历的第一个数
    var root = pre[0];
    var tree = new TreeNode(root);
    //找到中序遍历根节点所在位置
    var index = vin.indexOf(root);
    tree.left = creatTree(pre.slice(1,index+1),vin.slice(0,index));
    tree.right = creatTree(pre.slice(index+1),vin.slice(index+1));
    return tree;
}

2.根据后序+中序

function creatTree(pos, vin)
{
    if(!pos || vin.length === 0){
        return null;
    }
    //创建根节点,根节点是后序遍历的最后一个数
    var root = pos[pos.length-1];
    var tree = new TreeNode(root);
    //找到中序遍历根节点所在位置
    var index = vin.indexOf(root);
    tree.left=creatTree(pos.slice(0,index),vin.slice(0,index))
    tree.right=creatTree(pos.slice(index,pos.length-1),vin.slice(index+1))
    return tree;
}

本文链接https://blog.csdn.net/qq_39903567/article/details/115867151

;原文链接:https://blog.csdn.net/qq_39903567/article/details/115867151
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐