| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【数据结构】二叉树 -> 正文阅读 |
|
[数据结构与算法]【数据结构】二叉树 |
目录 1.介绍? ? ? ? 1.1.二叉树????????什么是二叉树,想要知道二叉树,我们需先知道树的概念 。树(tree)?是n(n>=0)个结点的有限集。n=0时称为空树。在任何一棵非空树中:1. 有且只有一个特定的称为?根(root)?的结点;2. 当n>1时,其余结点可分为m(m>0)个?互不相交?的有限集,其中每一个集合又是一棵树,并且成为?根的子树(subtree),树是一种一对多的结构。 ?二叉树,就是度最多只有2的树,通俗的讲,就是每个结点最多只能有两个分支。 ????????1.2.满二叉树? ? ? ? 满二叉树就是满足以下性质的二叉树: ????????1.满二叉树中第 i 层的结点数为 2n-1?个。 ????????2.深度为 k 的满二叉树必有 2k-1 个结点 ,叶子数为 2k-1。 ????????3.满二叉树中不存在度为 1 的结点,每一个分支点中都两棵深度相同的子树,且叶子结点都在最底层。 2.二叉树的存储结构????????二叉树的存储结构分为两种,顺序存储和链式存储。 ????????2.1.二叉树的顺序存储? ? ? ? 二叉树的存储结构利用数组的形式存储,并按照满二叉树的顺序排序,没有的地方存0即可。 输入方式按照层次自左向右依次输入即可,即是按照满二叉树的顺序。
? ? ? ? ? 2.2.二叉树的链式存储? ? ? ? 二叉树的链式存储结构通过链表的形式实现,首先,作为二叉树,需要两个分支分别代表下一个结点,我们将两个结点分别命名为左、右孩子,以及本身的数据域
3.二叉树的建立? ? ? ? 二叉树的建立分为三种:前序建立,中序建立,以及后序建立。前序建立就是先输入根结点,再输入左子树,最后输入右子树,即根左右;中序建立就是左根右,后序建立就是左右根 这里抽出前序建立进行评说: 二叉树的前需建立通过递归的形式实现,对每一个分支进行建立,直到输入为空(自定义一个字符)
4.二叉树的遍历? ? ? ? 4.1.二叉树的递归遍历? ? ? ? 二叉树的递归遍历分为前序遍历,中序遍历和后序遍历,代码比较简单,看一下基本都能理解:
? ? ? ? 4.2.二叉树的非递归遍历? ? ? ? 非递归遍历如何实现?主要是运用栈先进后出的思想进行遍历,既然要用到栈,我们就需要一些有关栈的函数
前序非递归遍历:根左右,扫描二叉树,将根存入栈,再存入左子树,在对左子树进行上一步操作,直到左子树遍历完成,存入右子树,重复操作进行遍历(由于前序和中序思想类似,不再逐个解释)
后序非递归遍历:特殊处理,由于后序遍历会经过两次根结点,所以会多出一个cishu变量,在第一次经过时不对其进行遍历,直至第二次才遍历
? ? ? ? 4.3.二叉树的层次遍历? ? ? ? 二叉树的层次遍历主要通过队列先进先出的思想实现:所以我们需要一些有关队列的函数
?以上就为二叉树的一些遍历方法和建立方法~ 如果有什么错误请指出~笔者会及时更改 多多担待~~ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/26 16:53:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |