美高梅平台下载-美高梅娱乐平台登录

热门关键词: 美高梅平台下载,美高梅娱乐平台登录

任何一个包含n个节点完全二叉树(满足从根节点开

日期:2019-09-30编辑作者:美高梅平台下载

一直以来,我都很少使用也避免使用到树和图,总觉得它们神秘而又复杂,但是树在一些运算和查找中也不可避免的要使用到,那么今天我们就鼓起勇气来学习下树,争取在被问到和使用时不再那么怂。

基础知识

常见数据结构

二叉树也是一棵树(这不是废话么,虽说是废话,但这是事实),但它的每个节点最多只有2个儿子。

基本概念

    程序 = 算法 + 数据结构

    数据结构是计算机存储、组织数据的方式。

    数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

    通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。

    数据结构往往同高效的检索算法和索引技术有关。
1.栈

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算(先进后出)。这一端被称为栈顶,把另一端称为栈底。

在了解了二叉树的概念后,我们如何定义一颗树的节点?so easy.

常见数据结构

    集合:set,multiset

    线性结构:数组、链表、队列、栈

    树形结构:二叉树及其变型,线段树,巴拉巴拉

    图形结构:各种图
美高梅娱乐平台登录,2. 队列

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作(先进先出),和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

// 节点public class BinaryNode { // 存放的信息 Object data; // 左儿子 BinaryNode left; // 右儿子 BinaryNode right;}

栈和队列

3. 单项链表

单链表有一个头节点head,指向链表在内存的首地址。链表中的每一个节点的数据类型为结构体类型,节点有两个成员:整型成员(实际需要保存的数据)和指向下一个结构体类型节点的指针即下一个节点的地址(事实上,此单链表是用于存放整型数据的动态数组)。链表按此结构对各节点的访问需从链表的头找起,后续节点的地址由当前节点给出。无论在表中访问那一个节点,都需要从链表的头开始,顺序向后查找。链表的尾节点由于无后续节点,其指针域为空,写作为NULL。

单链表更适合插入删除操作多的数据存储,而顺序结构则适合查找操作比较多的数据存储。

静态链表、循环链表、双线链表

构造完树之后,不可避免的就是读取(或者叫做遍历,不然存储成这样干哈啊)。遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。

栈Stack

    先进后出(FILO)

美高梅娱乐平台登录 1

FILO

4. 二叉树

a.根二叉树(Rooted Binary Tree):
有一个根结点,每个结点至多有两个孩子。
b.满二叉树(Full Binary Tree):
要么是叶子结点(结点的度为0),要么结点同时具有左右子树(结点的度为2)。
c.完全二叉树(Complete Binary Tree):
每层结点都完全填满,在最后一层上如果不是满的,则只缺少右边的若干结点。
d.完美二叉树(Perfect Binary Tree)
所有的非叶子结点都有两个孩子,所有的叶子结点都在同一层。即每层结点都完全填满。
e.无限完全二叉树(Infinite Complete Binary Tree):
每个结点都有两个孩子,结点的层数是无限的。
f.平衡二叉树(Balanced Binary Tree):
也称为AVL树,它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
注意:仅有前序和后序遍历,不能确定一个二叉树,必须有中序遍历的结果

对于树的遍历,按照访问根节点的次序不同,主要有以下三种遍历算法:

队列Queue

    先进先出(FIFO)

美高梅娱乐平台登录 2

FIFO

5. 堆

最大堆的根结点中的元素在整个堆中是最大的;

最小堆的根结点中的元素在整个堆中是最小的。

  1. 先序遍历
  2. 后序遍历
  3. 中序遍历

树和堆

6. 哈夫曼树

定义:给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。一般用于编码。

除了上面三种遍历,我们还会带大家学习下深度优先遍历和广度优先遍历。

树的定义

树(tree)是包含n(n>0)个结点的有穷集,其中:

  1. 每个元素称为结点(node)
  2. 有一个特定的结点被称为根结点或树根(root)
  3. 除根结点之外的其余数据元素被分为m(m≥0)个互不相交的集合T1,T2,……Tm-1,其中每一个集合Ti(1<=i<=m)本身也是一棵树,被称作原树的子树(subtree)。
  4. 空集也是一棵树
    树去掉根节点叫做森林
7.二叉排序树

a. 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
b. 若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
c. 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
左、右子树也分别为二叉排序树;
d. 没有键值相等的节点
二分查找的时间复杂度是O(log(n)),最坏情况下的时间复杂度是O(n)(相当于顺序查找)

我们首先给出一个假设:L:左子树D:根R:右子树

树的定义的等价命题

  • 设G=<V,E>是n阶m条边的无向图,则下面各命题是等价的:
    • G 是树.
    • G 中任意两个顶点之间存在惟一的路径.
    • G 中无回路且 m=n-1.
    • G 是连通的且 m=n-1.
    • G 是连通的且 G 中任何边均为桥.
    • G 中没有回路,但在任何两个不同的顶点之间加一条新边,在所得图中得到惟一的一个含新边的圈.

1.2.1 先序遍历

先序遍历:根节点->左子树->右子树

算法的简单实现如下:

 public static void DLR(BinaryNode node) { // 访问根节点 System.out.print(node.data + " "); // 遍历左子树 if (node.left != null) { DLR(node.left); } // 遍历右子树 if (node.right != null) { DLR(node.right); } }

树的性质

  • 如果G是树,那么边数=顶点数-1
  • 树中任意两点存在唯一路径
  • 树是连通的而且任何边均为桥
  • 在树中不同两点加上一个边会得到唯一一个圈

1.2.2 后序遍历

后序遍历:左子树->右子树->根节点

 public static void LRD(BinaryNode node) { // 遍历左子树 if (node.left != null) { LRD(node.left); } // 遍历右子树 if (node.right != null) { LRD(node.right); } // 访问根节点 System.out.print(node.data + " "); }

二叉树

美高梅娱乐平台登录 3

二叉树

  • 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。二叉树常被用于实现二叉查找树和二叉堆。
  • 一棵深度为k,且有2(k-1)个节点称之为满二叉树,一棵二叉树第i层最多有2(i-1)个节点;
  • 深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为1至n的节点对应时,称之为完全二叉树

任何一个包含n个节点完全二叉树(满足从根节点开始,依次从上往下,从左往右遍历子节点,进行标记。如上图),对于任何下标为i的节点来说,1≤i≤n 有:

  • 当i≠1时,parent(i)在⌊i/2⌋.i=1时,i是树根,没有父节点。
  • 当2i≤n时,lchild(i)在2i。2i>n,i没有左孩子。
  • 当2i+1≤n时,rchild(i)在2i+1.2i+1>n,i没有右孩子。

本文由美高梅平台下载发布于美高梅平台下载,转载请注明出处:任何一个包含n个节点完全二叉树(满足从根节点开

关键词:

注解处理器,接下我们将学习使用APT

主目录见:Android高级进阶知识我们在开发的时候为了提高效率往往会选择一个基于注解的框架,但是有时使用反射通...

详细>>

实现方法,真正调用的构造

参考:Android中定时器的3种实现方法 在Android开发中,定时器一般有以下3种实现方法: 总结 Handler类的主要作用是发送...

详细>>

Android 架构师之路 目录,GUI 系统来说

在日常开发过程中时常需要用到设计模式,但是设计模式有23种,如何将这些设计模式了然于胸并且能在实际开发过程...

详细>>

约束布局,根据基准线设置位置.

欢迎Follow我的GitHub, 关注我的简书. 其余参考Android目录. ConstraintLayout 是什么 ConstraintLayout 是在2016年的 Google I/O大会上...

详细>>