| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【数据结构笔记】数据结构基础—树 -> 正文阅读 |
|
[数据结构与算法]【数据结构笔记】数据结构基础—树 |
1.树的原理树(Tree)是n(n≥0)个节点的有限集合T,它满足两个条件 : ????????1.有且仅有一个特定的称为根(Root)的节点; ????????2.其余的节点可以分为m(m≥0)个互不相交的有限集合T1、T2、……、Tm,其中每一个集合又是一棵树,并称为其根的子树 表示方法 :树形表示法、目录表示法。 ????????一个节点的子树的个数称为该节点的度数, ????????一棵树的度数是指该树中节点的最大度数, ????????度数为零的节点称为树叶或终端节点, ????????度数不为零的节点称为分支节点, ????????除根节点外的分支节点称为内部节点。
2.二叉树定义????????二叉树是n(n ≥ 0)个节点的有限集合;要么是空集(n=0),要么是由一个根节点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成,严格区分左孩子和右孩子,即使只有一个子节点也要区分左右。 性质性质1 二叉树第i层上的结点数目最多为2^(i-1),(i≥1)。 顺序存储?链式存储
3. 二叉树的遍历????????遍历 :沿某条搜索路径周游二叉树,对树中的每一个节点访问一次且仅访问一次。 ????????二叉树是非线性结构,每个结点有两个后继,则存在如何遍历即按什么样的搜索路径进行遍历的问题。 由于二叉树的递归性质,遍历算法也是递归的。三种基本的遍历算法如下 : ? ? ? ? 1.先访问树根,再访问左子树,最后访问右子树;(根左右) ? ? ? ? 2.先访问左子树,再访问树根,最后访问右子树;(左根右) ? ? ? ? 3.先访问左子树,再访问右子树,最后访问树根;(左右根) ?注:当遍历算法为左根右时,先对根节点A进行左根右判断,得到B,此时B有子树,那么把B当作根,继续左根右判断,发现没有左节点,根是B,故B入队,右是C,C有子树,那么把C当作根,继续左根右,D是左且没有子树,故D入队,根C入队,此时A的左侧遍历完成,根A入队,右为E,有子树,将E作为根,左没值,故E入队,右F有子树,来到左G,G有子树,来到左H,H没子树,H入队,根G入队,右K入队,F入队,中序序列:BDCAEHGKF ?4.二叉树遍历的实现创建树
这里使用了先序的方式来创建树,以上图为例,输入scanf 的序列应该是: A B # C D # # # E # F G H # # K # # # 先序遍历
中序遍历
后序遍历
层次遍历
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 8:27:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |