美文网首页
【JS算法】JS数据结构

【JS算法】JS数据结构

作者: wyc0859 | 来源:发表于2022-04-29 16:07 被阅读0次

    JS的数据结构就2种,数组和链表
    链表可以演变成:树形结构、图形结构
    数组可以演变成:队列、栈
    树形结构是前端最重要的数据结构

    数组和链表 在内存的存储

    数组:是由相同类型的元素的集合所组成的数据结构,分配一块连续的内存来存储。知道第一个元素的内存地址,加上下标(偏移量)就能找到第2或N个。
    数组随机访问的速度快,增加和删除则慢(因为删除index2,后面的3-n都要往前挪一位)

    链表:非连续存储的指向型存储,随机访问的速度慢(需一层层查找),增加和删除则快(不需要挪位)


    链表

    树形结构、图形结构

    树形结构又指向其他树点,就是图形结构
    图结构,在webpack和vite中有用到,作用是,能找出是否有文件被重复加载


    数组

    堆和栈


    对象

    对象是数组+链表的结构



    来看104题

    给定一个二叉树,找出其最大深度
    示例: [3,9,20,null,null,15,7]

    var maxDepth = function(root) {
        //终止条件
        if(root==null){
            return 0
        }
        //树最大深度,等于左子树的深度和右子树的深度,最大的那一个+1
        return Math.max(maxDepth(root.left),maxDepth(root.right))+1  //递归
    };
    

    只要是树形结构,解答基本都可以用递归解决

    接着看 力扣上226题

    给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点

    var invertTree = function(root) {
        if(root===null){
            return root
        }
        //递归子问题
        [root.left,root.right] = [invertTree(root.right), invertTree(root.left)]
        console.log(root,root.left,root.right)
        return root
    };  
    

    相关文章

      网友评论

          本文标题:【JS算法】JS数据结构

          本文链接:https://www.haomeiwen.com/subject/blvlyrtx.html