当前位置: 网站首页>小程序开发>400电话办理

新安400电话办理【新安网站公司】新安百度优化、新安域名注册、新安网店美工、新安微信公众号托管

发表日期: 2021-05-07 13:40:15 浏览次数:102

新安400电话办理【新安网站公司】新安百度优化、新安域名注册、新安网店美工、新安微信公众号托管


新安县位于河南省洛阳市西部,地处北纬34°36′至北纬35°05′,东经111°53′至112°19′之间。北临黄河,与济源市及山西省垣曲县隔河相望;南与宜阳县接壤;西与渑池县及义马市为邻;东与洛阳市孟津区等 [27]  毗连。

新安历为十三朝古都洛阳畿地和西方门户,地扼函关古道,东连郑汴,西通长安,自古为中原要塞,军事重地。当代,陇海铁路及310国道、连霍高速公路横贯东西,更成为连接祖国西北、华东及华北间的重要通道。

新安不仅是河南省48个扩权县和50个对外开放重点县之一,也被誉为中西部地区发展潜力最大、最具活力的县市之一。 [1]  2020年7月29日,入选2019年重新确认国家卫生乡镇(县城)名单。 [2]  2020年11月,入选第六届全国文明城市 [3]  。

2020年11月,入选 “2020年中国工业百强县(市)”,排名第84位。 [4]  11月27日,被评为省级森林城市 [5]  。

2020年,新安县完成地区生产总值530亿元,同比增长4%,一般公共预算收入28.14亿元,同比增长5.9%;规模以上工业增加值同比增长4.7%;固定资产投资同比增长7.1%;社会消费品零售总额完成112.4亿元;城乡居民人均可支配收入分别达到38312元、18596元。 [29] 


第十章:树

本节参考文章:

JavaScript数据结构——树的实现


树的基本概念和类型

在计算机科学中,树是一种十分重要的数据结构。树被描述为一种分层数据抽象模型,常用来描述数据间的层级关系和组织结构。树也是一种非顺序的数据结构。下图展示了树的定义:



如上图所示,一棵完整的树包含一个位于树顶部的节点,称之为根节点(11),它没有父节点。树中的每一个元素都叫做一个节点,节点分为内部节点(图中显示为黄色的节点)和外部节点(图中显示为灰色的节点),至少有一个子节点的节点称为内部节点,没有子元素的节点称为外部节点或叶子节点。一个节点可以有祖先(根节点除外)和后代。子树由节点本身和它的后代组成,如上图中三角虚框中的部分就是一棵子树。节点拥有的子树的个数称之为节点的度,如上图中除叶子节点的度为0外,其余节点的度都为2。从根节点开始,根为第1层,第一级子节点为第2层,第二级子节点为第3层,以此类推。树的高度(深度)由树中节点的最大层级决定(上图中树的高度为4)。


在一棵树中,具有相同父节点的一组节点称为兄弟节点,如上图中的3和6、5和9等都是兄弟节点。


树的分类:

二叉树,二叉搜索树,自平衡树,红黑树,完全树

在后面的内容中都会详细讲到


本章重点讲二叉搜索树


二叉树和二叉搜索树

二叉树

  二叉树中的节点最多只能有两个子节点,一个是左子节点,一个是右子节点。左右子节点的顺序不能颠倒。因此,二叉树中不存在度大于2的节点。


二叉搜索树(BST——Binary Search Tree)是二叉树的一种,它规定在左子节点上存储小(比父节点)的值,在右子节点上(比父节点)存储大(或等于)的值。上图就是一个二叉搜索树。


根据二叉树的描述,一个节点最多只有两个子节点,我们可以使用《JavaScript数据结构——链表的实现与应用》一文中的双向链表来实现二叉搜索树中的每一个节点。下面是二叉搜索树的数据结构示意图:


代码实现:


class BinarySearchTree {

    constructor () {

        this.root = null;

    }


    // 向树中插入一个节点

    insert (key) {}


    // 在树中查找一个节点

    search (key) {}


    // 通过中序遍历方式遍历树中的所有节点

    inOrderTraverse () {}


    // 通过先序遍历方式遍历树中的所有节点

    preOrderTraverse () {}


    // 通过后序遍历方式遍历树中的所有节点

    postOrderTraverse () {}


    // 返回树中的最小节点

    min () {}


    // 返回树中的最大节点

    max () {}


    // 从树中移除一个节点

    remove (key) {}

}


在DoubleLinkedList类中,每一个节点有三个属性:element、next和prev。我们在这里用element表示树中节点的key,用next表示树中节点的右子节点(right),用prev表示树中节点的左子节点(left)。


insert (key) {

    let newNode = new Node(key);


    if (this.root === null) this.root = newNode;

    else insertNode(this.root, newNode);

}


当树的root为null时,表示树为空,这时直接将新添加的节点作为树的根节点。否则,我们需要借助于私有函数insertNode()来完成节点的添加。在insertNode()函数中,我们需要根据新添加节点的key的大小来递归查找树的左侧子节点或者右侧子节点,因为根据我们的二叉搜索树的定义,值小的节点永远保存在左侧子节点上,值大的节点(包括值相等的情况)永远保存在右侧子节点上。下面是insertNode()函数的实现代码:


let insertNode = function (node, newNode) {

    if (newNode.element < node.element) {

        if (node.prev === null) node.prev = newNode;

        else insertNode(node.prev, newNode);

    }

    else {

        if (node.next === null) node.next = newNode;

        else insertNode(node.next, newNode);

    }

};


自平衡树(ALV树)

上面的BST树(二叉搜索树)存在一个问题,树的一条边可能会非常深,而其它边却只有几层,这会在这条很深的分支上添加、移除和搜索节点时引起一些性能问题。如下图所示:



为了解决这个问题,我们引入了自平衡二叉搜索树(AVL——Adelson-Velskii-Landi)。在AVL中,任何一个节点左右两棵子树的高度之差最多为1,添加或移除节点时,AVL树会尝试自平衡。对AVL树的操作和对BST树的操作一样,不同点在于我们还需要重新平衡AVL树,在讲解对AVL树的平衡操作之前,我们先看一下什么是AVL树的平衡因子。

  前面我们介绍过什么是树(子树)的高度,对于AVL树来说,每一个节点都保存一个平衡因子。


节点的平衡因子 = 左子树的高度 - 右子树的高度

  观察下面这棵树,我们在上面标注了每个节点的平衡因子的值:

  


所有子节点的平衡因子都为0,因为子节点没有子树。节点5的左右子树的高度都为1,所以节点5的平衡因子是0。节点9的左子树高度为1,右子树高度为0,所以节点9的平衡因子是+1。节点13的左子树高度为0,右子树高度为1,所以节点13的平衡因子是-1…AVL树的所有节点的平衡因子保持三个值:0、+1或-1。同时,我们也注意到,当某个节点的平衡因子为+1时,它的子树是向左倾斜的(left-heavy);而当某个节点的平衡因子为-1时,它的子树是向右倾斜的(right-heavy);当节点的平衡因子为0时,该节点是平衡的。一颗子树的根节点的平衡因子代表了该子树的平衡性。


为了使AVL树重新达到平衡状态,我们需要对AVL树中的部分节点进行重新排列,使其既符合二叉搜索树的定义,又符合自平衡二叉树的定义,这个过程叫做AVL树的旋转。


AVL树的旋转一共分为四种:

LL(left-left)旋转,新添加的节点位于树的根节点的左子树的左子树上。以非平衡因子的节点为中心将整棵树向右旋转。

LR(left-right)旋转,新添加的节点位于树的根节点的左子树的右子树上。先执行RR旋转,然后再执行LL旋转。

RR(right-right)旋转,新添加的节点位于树的根节点的右子树的右子树上。以非平衡因子的节点为中心将整棵树向左旋转。

RL(right-left)旋转,新添加的节点位于树的根节点的右子树的左子树上。先执行LL旋转,然后再执行RR旋转。


下面是这四种旋转的操作示意图:

  


红黑树

红黑树是一种平衡二叉树。这种树可以进行高效的中序遍历。通过对任何一条从根到叶子的简单路径上各个节点的颜色进行约束,确保没有一条路径会比其他路径长2倍,因而是近似平衡的。所以相对于严格要求平衡的AVL树来说,它的旋转保持平衡次数较少。用于搜索时,插入删除次数多的情况下我们就用红黑树来取代AVL


红黑树看的有点费劲,写不好,所大家就看这两篇文章吧:

javascript 红黑树算法与说明


JavaScript实现数据结构与算法08’红黑树’

微信图片_20210425092605.jpg

新安400电话办理新安网站公司新安百度优化、新安域名注册、新安网店美工、新安微信公众号托管

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878