树和二叉树->基础知识
树的表示方法
1 一般表示法

2 广义表表示法

3 凹入表示法

树的基本术语:
树:n(n>=0)个结点的有限集
结点:包含一个数据元素及若干指向其子树的分支
结点的度:结点拥有的子树数成为结点的度
叶子(也叫终端结点):度为0的结点
非终端结点(也叫分支结点):度不为0的结点
树的度:树内各结点的度的最大值
孩子:结点的子树的根成为该结点的孩子
双亲:若B结点是A结点的孩子,则A结点是B结点的双亲
堂兄弟:其双亲在同一层的结点护卫堂兄弟
结点的层次:从根开始定义起,根为第一层,根的孩子为第二层
树的深度(也叫高度):树中结点的最大层次。
有序树:子树有序的树
无序树:不考虑子树的顺序
森林:m(m>=0)棵互不相交的树的集合。
二叉树定义
在二叉树中,每个结点至多只有两颗子树,并且,二叉树的子树有左右之分,其次序不能颠倒。关于树的术语也都适用于二叉树
完全二叉树定义
一颗深度为k,除第k层外,其它各层的结点数(1~k-1)的结点数都达到最大个数,第k层有叶子结点,且叶子结点从左至右依次排布,这就是完全二叉树。
满二叉树定义
一颗深度为k且有2k-1个结点的二叉树成为满二叉树
二叉树性质
性质1 在二叉树的第i层上至多有2i-1个结点
性质2 深度为k的二叉树至多有2k-1个结点, 用等比数列求和公式就可容易证明
性质3 对任何一颗二叉树T,终端结点数n0和度为2的结点数n2的关系如下:
n0=n2+1,在博客“内部排序->选择排序->树形选择排序”的附录1已经证明过。
性质4 具有n个结点的完全二叉树的深度为[log2n]+1
证明:假设深度为k, 根据性质2和完全二叉树的定义有
2k-1 < n <= 2k-1
性质5 对一颗有n个结点的完全二叉树,按层序编号,则对任一结点,都有:
(1) 根结点除外的其它结点i的双亲为[i/2]
(2) 结点i的左孩子结点为2*i,(2*i不超过树的结点个数的情况下)
(3) 结点i的右孩子结点为2*i+1, (2*i+1不超过树的结点个数的情况下)
树和二叉树->基础知识的更多相关文章
- 【VB6】使用VB6创建和访问Dom树【爬虫基础知识 】
使用VB6创建和访问Dom树 关键字:VB,DOM,HTML,爬虫,IHTMLDocument 我们知道,在VB中一般大家会用WebBrowser来获取和操作dom对象. 但是,有这样一种情形,却让我 ...
- Linux dts 设备树详解(一) 基础知识
Linux dts 设备树详解(一) 基础知识 Linux dts 设备树详解(二) 动手编写设备树dts 文章目录 1 前言 2 概念 2.1 什么是设备树 dts(device tree)? 2. ...
- Java数据结构——树、二叉树的理论知识汇总
通用树的理论知识 一.树的定义 由一个或多个(n>=0)节点组成的有限集合T,有且仅有一个节点称为根(root),当n>1时,其7余的节点为m(m>=0)个互不相交的有限集合T1,T ...
- Python基础知识4--数据结构(树)
树 树的概念 堂兄弟的双亲不一定是兄弟关系. 二叉树 斜树 满二叉树 完全二叉树 二叉树的性质
- Python超全干货:【二叉树】基础知识大全
概念 二叉树是每个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(right subtree) 二叉树的链式存储: ...
- 浅析C++基础知识
近期想对C++的面试题目进行一下更加详细的整理.事实上认真思考一下C++程序猿的面试,我们能够发现对程序猿的能力的考察总是万变不离当中,这些基础知识主要分为五部分:一. C/C++基础知识 二. C/ ...
- 面试基础知识集合(python、计算机网络、操作系统、数据结构、数据库等杂记)
python python _.__.__xx__之间的差别 python中range.xrange和randrange的区别 python中 =.copy.deepcopy的差别 python 继承 ...
- JAVA学习基础知识总结(原创)
(未经博主允许,禁止转载!) 一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平 ...
- LeetCode刷题191130 --基础知识篇 二叉搜索树
休息了两天,状态恢复了一下,补充点基础知识. 二叉搜索树 搜索树数据结构支持许多动态集合操作,包括Search,minimum,maximum,predecessor(前驱),successor(后继 ...
随机推荐
- 【Java】浅谈HashMap
HashMap是常用的集合类,以Key-Value形式存储值.下面一起从代码层面理解它的实现. 构造方法 它有好几个构造方法,但几乎都是调此构造方法: public HashMap(int initi ...
- ArcGIS Runtime SDK for iOS之符号和渲染
符号定义了图形外观的非地理方面.它包括了图形的颜色.线宽.透明度等等.ArcGIS Runtime SDK for iOS包含了许多符号类,其中的每个类可以让你以独特的方式指定符号.每个符号的类型也是 ...
- JVM 内部原理(七)— Java 字节码基础之二
JVM 内部原理(七)- Java 字节码基础之二 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java ...
- msyql同步的时候报错 : 错误代码: 1293 Incorrect table definition;there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
场景,两个不同服务器上的数据库,进行数据库同步 但是执行之后,提示报错 错误代码: 1293 Incorrect table definition; there can be only one TIM ...
- 大数据学习笔记03-HDFS-HDFS组件介绍及Java访问HDFS集群
HDFS组件概述 NameNode 存储数据节点信息及元文件,即:分成了多少数据块,每一个数据块存储在哪一个DataNode中,每一个数据块备份到哪些DataNode中 这个集群有哪些DataNode ...
- js 异步请求
<p id="check"> <label>验证码:</label> <input class="vid" id=&q ...
- 阿里云oss上传文件如何支持https?
let client = new OSS.Wrapper({ accessKeyId: res.data.accessKeyId, accessKeySecret: res.data.accessKe ...
- 设计模式-结构型模式,python桥接模式
桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦. 这种模式涉及到一个作为桥接 ...
- ef 某些字段更新 某些字段不更新
不更新 _pocDbContext.Entry<UploadFileActiveTask>(activeTask).Property("id").IsModified ...
- 看看大网站都用什么操作系统和Web服务器
以下内容为网络上转载总结,不是很准确 Google 用哪些软件做 Web Server? 除了有两个节点操作系统看出来是 Linux 外,其他的都是未知的. Web 服务器用的都是 GWS ? 我估计 ...