树
树定义
专业定义:
1、有且只有一个称为根的节点
2、有若干个互不相交的子树,这些子树本身也是一棵树
通俗定义:
1、树是由节点和边组成
2、每个节点只有一个父节点但可以有多个子节点
3、但有一个节点例外,该节点没有根节点,此节点称为根节点
专业术语
节点 父节点 子节点
子孙 堂兄弟
深度:
从根节点到最底层节点的层数称之为深度
根节点是第一层
叶子节点;(叶子就不能劈叉了)
没有子节点的节点
非终端节点:
实际就是非叶子节点。
根节点既可以是叶子也可以是非叶子节点
度:
子节点的个数称为度。(一棵树看最大的)
树分类:
一般树
任意一个节点的子节点的个数都不受限制
二叉树(有序树)
任意一个节点的子节点的个数最多两个,且子节点
的位置不可更改。
分类:
一般二叉树
满二叉树
在不增加树的层数的前提下。无法再多
添加一个节点的二叉树就是满二叉树。
完全二叉树
如果只是删除了满二叉树最底层最右边的
连续若干个节点,这样形成的二叉树就是
完全二叉树。
森林
n个互不相交的树的集合
一般的二叉树要以数组的方式存储,要先转化成完全二叉树,因为如果你
只存有效节点(无论先序,中序,后序),则无法知道这个树的组成方式
是什么样子的。
树的存储(都是转化成二叉树来存储)
二叉树的存储
连续存储【完全二叉树】
优点:
查找某个节点的父节点和子节点(也包括判断有咩有)速度很快
缺点:
耗用内存空间过大
链式存储
一般树的存储
双亲表示法
求父节点方便
孩子表示法
求子节点方便
双亲孩子表示法
求父节点和子节点都很方便
二叉树表示法
把一个普通树转化成二叉树来存储
具体转换方法:
设法保证任意一个节点的
左指针域指向它的第一个孩子
有指针域指向它的下一个兄弟
只要能满足此条件,就可以把一个普通树转化成二叉树
一个普通树转化成的二叉树一定没有右子树
森林的存储
先把森林转化为二叉树,再存储二叉树,具体方式为:根节点
之间可以当成是兄弟来看待
二叉树操作
遍历
先序遍历【先访问根节点】
先访问根节点
再先序访问左子树
再先序访问右子树
中序遍历【中间访问根节点】
中序遍历左子树
再访问根节点
再中序遍历右子树
后序遍历【最后访问根节点】
先后序遍历左子树
再后序遍历右子树
再访问根节点
已知两种遍历序列求原始二叉树
通过先序和中序 或者 中序和后续我们可以
还原出原始的二叉树
但是通过先序和后续是无法还原出原始的二叉树的
换种说法:
只有通过先序和中序, 或通过中序和后序
我们才可以唯一的确定一个二叉树
应用
树是数据库中数据组织的一种重要形式(例如图书馆
的图书分类一层一层往下分。)
操作系统子父进程的关系本身就是一棵树
面向对象语言中类的继承关系本身就是一棵树
赫夫曼树(树的一个特例)
相关推荐
### B树基础知识深入解析 #### B树概览 B树是一种多路搜索树,不同于传统的二叉树,它允许多个子节点,这使得B树能够有效地管理大规模数据集,尤其是在磁盘存储环境中。B树的基本特性包括: 1. **多路性**:任意...
NOIP普及讲座树基础知识.ppt
本文将围绕“PHP基础知识树形图”展开,深入探讨PHP的核心概念、语法、数据类型、控制结构、函数、数组、类与对象、错误与异常处理以及文件操作等关键知识点。 1. **PHP基础概念** - PHP是嵌入在HTML中的,用于...
计算机二级公共基础知识.pdf 计算机二级公共基础知识是指计算机科学和技术领域的基础知识,涵盖了计算机科学的基本概念、算法、数据结构、计算机系统等方面的知识。本文档将从算法、数据结构、计算机系统等方面对...
5. **编程基础**:除了C语言,可能还会涵盖其他编程语言的基础知识,如变量、数据结构(数组、链表、树等)、算法(排序、查找)以及面向对象编程的基本概念。 在【公共基础复习资料.doc】和【二级公共基础120题...
数据库基础知识概述 本篇资源摘要信息将对数据库基础知识进行概述,主要涵盖数据库的基本概念、组成、安装与系统结构、数据库及表的操作、日常使用与管理、语言、性能问题等方面。 数据库基础知识 数据库系统是指...
【树的基础知识】 树是一种非线性的数据结构,它能够有效地表示具有分支和层次特性的数据集合。在现实生活中,树型结构广泛应用于各种场景,例如社会组织结构、计算机文件系统等。树的分支特性使得它在解决问题时...
本主题将深入探讨"数据结构基础知识",包括二叉树、链表、队列、搜索二叉树以及哈夫曼树。 首先,二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。二叉树分为几种类型,如...
全国计算机等级考试二级公共基础知识教程 本教程涵盖了全国计算机等级考试二级公共基础知识的所有考试内容,从基本数据结构与算法到程序设计基础、软件工程基础、数据库设计基础等领域,全面涵盖了计算机科学的基础...
计算机专业基础知识点是每个IT从业者或学习者都必须掌握的核心内容。这涵盖了多个领域,包括计算机体系结构、数据结构、算法、操作系统、网络和数据库等。408计算机基础标签表明了这些知识点主要针对计算机科学与...
本文详细介绍了C++二级公共基础知识中的关键知识点,包括算法的概念与复杂度、数据结构的定义及分类、栈与线性链表的使用、树与二叉树的特性及遍历方法、二分查找法与冒泡排序法等。对于备考C++二级的学生而言,掌握...
计算机二级公共基础知识主要涵盖数据结构与算法、计算机系统的组成、操作系统、数据库基础、网络基础知识等多个方面,这些都是计算机科学和技术的基础,对于参加二级考试至关重要。下面将详细阐述其中的关键知识点。...
【标题】:“精华版”计算机基础知识全部资料 在信息技术飞速发展的今天,计算机基础知识成为每个人都应具备的基本素养。这份“精华版”计算机基础知识全部资料,旨在帮助初学者系统地理解和掌握计算机的核心概念,...
本课件全面涵盖了数据结构的基础知识,旨在帮助学习者建立起坚实的理解基础。以下是对其中主要知识点的详细阐述: 1. **数组**:数组是最基本的数据结构,它是一个有序的元素集合,元素可以是任意类型。数组提供了...
计算机基础知识是IT领域的基石,无论是专业开发者还是普通用户,都需要对这一领域有一定的了解。这个"计算机基础知识.rar"压缩包显然包含了一份名为"computer-basic.pdf"的文档,它可能详细介绍了计算机的基本概念、...