树和二叉树->基础知识
树的表示方法
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(后继 ...
随机推荐
- 【Socket】关于socket长连接的心跳包
TCP的socket本身就是长连接的,那么为什么还要心跳包呢? 在smack里有个30s发送一个空消息的线程,同样关于心跳包(keepalive) 据网络搜索到的资料解释如下 内网机器如果不主动向外发 ...
- 【iCore4 双核心板_FPGA】例程十六:基于双口RAM的ARM+FPGA数据存取实验
实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ int i; int address,data; ; ]; ]; char *p; /* US ...
- 卷积、矩阵乘积、高斯模糊滤波(降噪)、空域计算(2D卷积计算)、频域计算(FFT)的理解
矩阵乘积:对应行列对应元素相乘的和组成新的矩阵 两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义.如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵 并将此乘积记为: ...
- MQTT 学习记录
学习mqtt协议,从网上找demo验证一下. 参考链接 https://www.jianshu.com/p/ebbe25d1c4b2 https://blog.csdn.net/xxmonstor/a ...
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier、@scope
以下内容摘自部分网友的,并加上了自己的理解 @Service用于标注业务层组件(我们通常定义的service层就用这个) @Controller用于标注控制层组件(如struts中的action.Sp ...
- Tensorflow学习笔记——安装和运行
参考的资料: 1.官网 2.tensorflow官方文档中文版 安装的是Python 2.7; CPU support (no GPU support),版本是1.1 pip install tens ...
- Java8学习笔记(二)--三个预定义函数接口
三个函数接口概述 JDK预定义了很多函数接口以避免用户重复定义.最典型的是Function: @FunctionalInterface public interface Function<T, ...
- 从vboot来看:virtualbox 和 vmware 虚拟化软件环境的兼容性(支持能力)的差距真是挺大的!
仅仅就支持vboot启动来说:vwmare 完胜!! 熬了一周,(当前最新版本)用virtualbox 5.22 和 6.0 总是无法完成vboot的正常启动功能:不是蓝屏.就是死慢.要不就直接han ...
- HTTPS与证书
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息.它使用安全套接字层( ...
- Window应急响应(二):蠕虫病毒
0x00 前言 蠕虫病毒是一种十分古老的计算机病毒,它是一种自包含的程序(或是一套程序),通常通过网络途径传播,每入侵到一台新的计算机,它就在这台计算机上复制自己,并自动执行它自身的程序. 常见的 ...