数据结构与算法之-----二叉树(一)
【
写在前面的话:本专栏的主要内容:数据结构与算法。
1.对于初识数据结构的小伙伴们,鉴于后面的数据结构的构建会使用到专栏前面的内容,包括具体数据结构的应用,所使用到的数据结构,也是自己构建的,未使用系统的库文件,因此,建议这类小伙伴们从本专栏的总揽按顺序进行学习;
2.对于想查询有关资料的小伙伴们,可以选择性地浏览。希望小伙伴们都能有所收获~
】
上一章,我们介绍了队列结构。从本章开始,我们会陆续接触到一些非线性数据结构,由前面的学习我们知道,对一个数据系统而言,如果查找操作比较频繁的话,一般采用顺序结构存储;如果删除,插入操作比较频繁的话,一般采用链式结构存储;
那我们想一想,有没有这样一种数据结构,其兼有顺序结构和链式结构的优点?
有!树形结构!。
树形结构中最基础,最重要的,非二叉树莫属。本节主要介绍二叉树中的一些基本概念:
1.定义:
二叉树是每个结点最多有两个子树的树结构。2.概念:
节点的度:一个节点含有的子树的个数称为该节点的度;
叶节点:度为0的节点称为叶节点;
双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
兄弟节点:具有相同父节点的节点互称为兄弟节点;
树的度:一棵树中,最大的节点的度称为树的度;
节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
树的高度:树中节点的最大层次;
兄弟节点:双亲在同一层的节点互为兄弟节点;
节点的祖先:从根到该节点所经分支上的所有节点;
子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
森林:由m棵互不相交的树的集合称为森林;
3.基本性质:
性质1:二叉树第i层上的结点数目最多为2^i-1(i>=1);
性质2:深度为k的二叉树至多有2k-1个结点(k>=1);
性质3:包含n个结点的二叉树的高度至少为[log2n]+1; (向下取整)
性质4:在任意一棵二叉树中,若叶结点的个数为n1,度为2的结点数为n2,则n1=n2+1;
4.特殊二叉树:
1、满二叉树
定义:高度为h,并且由2^h-1个结点组成的二叉树,称为满二叉树
2、完全二叉树
定义:一棵二叉树中,只有最下面两层结点的度可以小于2,
并且最下层的叶结点集中在靠左的若干位置上,这样的二叉树称为完全二叉树。
特点:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。
显然,满二叉树必定是完全二叉树,而完全二叉树未必是满二叉树。
5.二叉树的三种遍历:
1.前序遍历:根节点->左子树->右子树。
在遍历左右子树时,仍然先访问根节点,再遍历左子树,最后遍历右子树。
2.中序遍历:左子树->根节点->右子树。
在遍历左右子树时,仍然先遍历左子树,再遍历根节点,最后遍历右子树。
3.后序遍历:左子树->右子树->根节点。
在遍历左右子树时,仍然先遍历左子树,再遍历右子树,最后访问根节点。
下一章将介绍二叉树的构建过程:
数据结构与算法之-----二叉树(二)
数据结构与算法之-----二叉树(一)相关推荐
- 常考数据结构与算法:输出二叉树的右视图
题目描述 请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图 上图树的右视图为:{1,4,3,7} 做此题之前可以先做下面3道题: 1. 常考数据结构与算法:求二叉树的层序遍历 2.常 ...
- 数据结构与算法之二叉树的序列化和反序列化及判断一棵树是否为平衡二叉树
数据结构与算法之二叉树的序列化和反序列化及判断一棵树是否为平衡而二叉树 目录 二叉树的序列化和反序列化 判断一棵树是否为平衡而二叉树 1. 二叉树的序列化和反序列化 1. 递归版本序列化和反序列化 代 ...
- 数据结构与算法之二叉树的先序遍历,中序遍历,后序遍历
数据结构与算法之二叉树的先序遍历,中序遍历,后移遍历 目录 实现二叉树的先序,中序,后序遍历,包括递归方式和非递归方式 在二叉树中找到一个节点的后继节点 1. 实现二叉树的先序,中序,后序遍历,包括递 ...
- 数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树
[本文谢绝转载,原文来自http://990487026.blog.51cto.com] 树 数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树二叉树的创建,关系建立二叉树的创建 ...
- 数据结构与算法:二叉树专题
数据结构与算法:二叉树专题 前言 前提条件 基础知识 二叉树链式存储结构 二叉树中序遍历 二叉树层序遍历 常见编程题 把一个有序整数数组放到二叉树中 逐层打印二叉树结点数据 求一棵二叉树的最大子树和 ...
- 数据结构与算法练习-二叉树中序遍历
python数据结构与算法练习-二叉树中序遍历 二叉树中序遍历 思路 python实现 二叉树中序遍历 链接: link. 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 样例 输入:ro ...
- 常考数据结构与算法:求二叉树的层序遍历
题目描述 给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历) 例如: 给定的二叉树是{3,9,20,#,#,15,7}, 该二叉树层序遍历的结果是 [ [3], [9,20], ...
- 数据结构与算法--重建二叉树
二叉树 树在实际编程中经常遇到地一种数据结构.上一篇中我们解释了二叉树及其原理,从中可以知道,树地操作会涉及到很多指针地操作,我们一般遇到地树相关地问题差不多都是二叉树.二叉树最重要地莫过于遍历,即按 ...
- 【数据结构与算法】二叉树
树 1.树.二叉树 2.二叉查找树 3.平衡二叉树.红黑树 4.递归树 一.树 1.树的常用概念 根节点.叶子节点.父节点.子节点.兄弟节点,还有节点的高度.深度以及层数,树的高度. 2.概念解释 节 ...
最新文章
- Entity Framework中的Migration问题
- LeetCode:14. Longest Common Prefix
- 3ds Max绘制青花瓷茶壶
- component lists rendered with v-for should have explicit keys
- 年底了,给想进阶的的前端朋友一些福利
- java怎样写入五个人的成绩_用java输入5个学员姓名和分数,显示分数最高的学员姓名和分数?...
- 【Python】解决浮点数间运算存在不确定尾数的问题
- 微信短信验证码注意事项(tp3.2-腾讯云)
- X1000对于CPU Core的参数解读(MIPS Cache)
- 网友对sars病毒事件的对话(转)
- 重庆大学计算机学院研究生奖学金评定准则,重庆大学经管学硕士生奖学金评定办法(试行).doc...
- Report中的Drill down
- 前端js下载本地模板
- 小学计算机考试感受作文,考试后的感想小学作文6篇
- 别再鼓吹神通广大的黑客了 只有务实才能让高管和董事会加大网络安全投入
- 数据库读写分离(二)
- UML在需求分析与系统设计中之实战讲解(完整UML图形演示)
- C# 深入单例(回笼)
- MT6572平台加入呼吸灯功能——编写linux驱动
- Windows Azure HandBook (7) 基于Azure Web App的企业官网改造