一.二叉树的基本概念 从逻辑结构角度来看,前面说的链表.栈.队列都是线性结构:而今天要了解的“二叉树”属于树形结构. 1.1 多叉树的基本概念,以上图中“多叉树”为例说明 节点:多叉树中的每一个点都叫节点:其中最上面的那个节点叫“根节点”: 父节点:节点1是节点2/3/4/5/6的父节点,然后节点2/3/4/5/6是节点1的子节点:节点2/3/4/5/6又是互为兄弟节点,因为它们有父节点为同一个节点: 空树:一个没有任何节点的树叫空树:一棵树可以只有一个节点,也就是只有根节点: 子树:子节点及子…
1.第226题:翻转二叉树 递归+迭代两种实现方式: /** 反转二叉树 * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {TreeNode} * 第一种方式迭代 * 执行用时 :72 ms, 在所有 JavaScript 提…
一.双向链表 在上文<JS数据结构第二篇---链表>中描述的是单向链表.单向链表是指每个节点都存有指向下一个节点的地址,双向链表则是在单向链表的基础上,给每个节点增加一个指向上一个节点的地址.然后头结点的上一个节点,和尾结点的下一个节点都指向null.同时LinkedList类中再增加一个last内部属性,一直指向链表中最后一个节点.结构模拟如图: 同样对外暴露的方法和单向链表一样,只是内部实现稍有变化 双向链表完整设计代码: /** * 自定义双向链表:对外公开的方法有 * append(e…
一.什么是数据结构栈 在数据结构中有一个栈结构,在内存空间中也有一个栈空间,这两个”栈“是两个不同的概念.这篇我们说的是数据结构中的栈.栈是一种特殊的线性表,特殊性在哪?就是只能在栈顶进行操作,往栈顶添加元素,一般叫push, 入栈:从栈顶移除元素,一般叫pop, 出栈,操作如图: 这个特征叫”后进先出“,Last  In  First  On, 简称LIFO.和JS数组中的push和pop函数功能有点像.当然栈的内部设计,就可以用数组,或者也可以用链表. 二.栈结构设计和应用示例 2.1 内部…
  9.1.树的定义   9.2.二叉树 人们把每个节点最多拥有不超过两个子节点的树定义为二叉树.由于限制子节点的数量为 2,人们可以为插入数据.删除数据.以及在二叉树中查找数据编写有效的程序了. 在考虑一种更加特殊的二叉树--二叉查找树的时候,鉴别子节点是很重要的.二叉查找树是一种较小数据值存储在左节点内而较大数据值存储在右节点内的二叉树.正如即将看到的那样,这种属性可以使查找非常有效.   9.2.1.构造二叉查找树 二叉查找树由节点组成,所以需要一个 Node 类,这个类类似于链表实现中用…
1.1 节点 1. 节点        网页是有很多的节点组成的  . 元素节点   指的是 :  标签     li  span 文本节点      属性节点 父子兄弟    父    parentNode        nextSibling 孩子    childNodes        nodeType == 1  来判断 是否是 元素节点 <ul> <li> 最喜欢用的  children    只得到   元素节点 1.获取节点属性    getAttribute(&q…
数据结构看python 作者:白宁超 2016年10月9日14:04:47 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc入门资料包含了基本要点.本文是对文档常用核心要点进行梳理,简单冗余知识不再介绍,作者假使你用c/java/c#/c++任一种语言基础.本系列文章属于入门内容,老鸟可以略看也可以略过,新鸟可以从篇一<快速上手学python>先接触下python怎样安装与运行,以及pycharm编辑器的使用和配置:篇…
二叉树和二叉查找树 概念 树是一种非线性的数据结构,以分层的方式存储数据. 树被用来存储具有层级关系的数据,比如文件系统的文件: 树还被用来存储有序列表. 一棵树最上面的节点称为根节点. 如果一个节点下面连接多个节点,那么该节点称为父节点,它下面的节点称为子节点. 一个节点可以有0个.1个或多个子节点. 没有任何子节点的节点称为叶子节点. 二叉树是一种特殊的树,它的子节点个数不超过两个. 二叉树具有一些特殊的计算性质,使得在它们之上的一些操作异常高效. 以某种特定顺序访问树中所有的节点称为树的遍…
常见数据结构——树 处理大量的数据时,链表的线性时间太慢了,不宜使用.在树的数据结构中,其大部分的运行时间平均为O(logN).并且通过对树结构的修改,我们能够保证它的最坏情形下上述的时间界. 树的定义有很多种方式.定义树的自然的方式是递归的方式.一棵树是一些节点的集合,这个集合可以是空集,若非空集,则一棵树是由根节点r以及0个或多个非空子树T1,T2,T3,......,Tk组成,这些子树中每一棵的根都有来自根r的一条有向的边所连接. 从递归的定义中,我们发现一棵树是N个节点和N-1条边组成的…
找出 int 数组的平衡点 左右两边和相等, 若存在返回平衡点的值(可能由多个); 若不存在返回 -1; ``java int [] arr = {2,3,4,2,4}; ```js const arr = [2,3,4,2,4]; https://repl.it/@xgqfrms/find-number-array-balance-point https://repl.it/@xgqfrms/find-Int-array-balance-point ts // 找出 Int 数组平衡点 /**…