【数据结构与算法】二分钟初识树

一:树的定义

树是一种数据结构,由n(n>1)个有限结点组成一个有层次关系的集合。形状像一颗倒立的树而得名。分为:无序树,有序树,二叉树,满二叉树,完全二叉树,平衡二叉树(AVL),二叉查找树(二叉搜索树、BST),霍夫曼树,红黑树,B-tree(B-树或者B树),B+树,B*树等。

节点结构体(C/C++)表示为:

typedef struct treeNode{    void *val;                  //数据项,任意类型    struct treeNode *left;      //左子节点指针     struct treeNode *right;     //右子节点指针}node;

节点类(Java)表示为:

public class TreeNode {    private Object data;            //数据项    private TreeNode leftChild;     //左子节点的引用    private TreeNode rightChild;    //右子节点的引用}

二:树的特点

1.根节点没有父节点。

2.每个非根节点只有一个父节点。

3.每个节点有零个或多个子节点。

三:相关术语

1.节点的度:节点含有子树的个数

2.叶子节点:节点的度为0。

3.子节点:一个节点含有的子树的根节点称为该节点的子节点。(这句有点绕口,举例:上图a,b,c是R的子节点)

4.父节点:含有子节点的节点,成为子节点的父节点。

5.兄弟节点:父节点相同的节点。

6.堂兄弟节点:父节点为兄弟节点的节点。

7.树的度:最大的节点的度称为树的度

8.树的高度或深度:树种节点的最大层次。

9.森林:n(n>=0)颗互不相交树的集合。

四:树的遍历

1.前序遍历

遍历顺序:访问根节点--->遍历左子树--->遍历右子树

2.中序遍历

遍历顺序:遍历左子树--->访问根节点--->遍历右子树

3.后序遍历

遍历顺序:遍历左子树--->遍历右子树--->访问根节点

原文地址:https://www.cnblogs.com/woniu201/p/10655727.html

时间: 2024-08-03 05:55:33

【数据结构与算法】二分钟初识树的相关文章

数据结构与算法二

1.课程安排表: 1. 线性表 2. 字符串 3. 栈和队列 4.树 5.查找 6.排序 7.暴力枚举法 8.广度优先搜索 9.深度优先搜索 10.分治 11.贪心 12.动态规划 13.图 14.数学方法与常见模型 15.大整数运算 16. 基础功能 2.   编程技巧: 1.把较大的数组放在main 函数(全局变量)外,作为全局变量,这样可以防止栈溢出,因为栈的大小是有限制的.GCC (C编译器) 段错误 2.如果能够预估栈,队列的上限,则不要用stack,queue,使用数组来模拟,这样速

Java数据结构和算法(一)树

Java数据结构和算法(一)树 前面讲到的链表.栈和队列都是一对一的线性结构,这节讲一对多的线性结构 - 树.「一对多」就是指一个元素只能有一个前驱,但可以有多个后继. 一.树 度(Degree) :节点拥有的子树数.树的度是树中各个节点度的最大值. 节点 :度为 0 的节点称为叶节点(Leaf)或终端节点.度不为 0 的节点称为分支节点.除根节点外,分支节点也被称为内部节点. 节点关系 :节点的子树的根称为该节点的孩子(Child).该结点称为孩子的双亲或父结点.同一个双亲的孩子之间互称为兄弟

数据结构与算法系列研究五——树、二叉树、三叉树、平衡排序二叉树AVL

树.二叉树.三叉树.平衡排序二叉树AVL 一.树的定义 树是计算机算法最重要的非线性结构.树中每个数据元素至多有一个直接前驱,但可以有多个直接后继.树是一种以分支关系定义的层次结构.    a.树是n(≥0)结点组成的有限集合.{N.沃恩}     (树是n(n≥1)个结点组成的有限集合.{D.E.Knuth})      在任意一棵非空树中:        ⑴有且仅有一个没有前驱的结点----根(root).        ⑵当n>1时,其余结点有且仅有一个直接前驱.         ⑶所有结

java数据结构与算法之平衡二叉树(AVL树)的设计与实现

[版权申明]未经博主同意,不允许转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53892797 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈(Stack)设

我的软考之路(四)——数据结构和算法(2)树和二叉树

上鲍恩描述了数据结构的线性结构,我们引入非线性结构本博客-树和二叉树.我想向大家介绍一些基本概念树,树遍历,然后介绍了二叉树的概念和特征.和二叉树遍历.叉树的对照,总结. 树为了描写叙述现实世界的层次结构,树结构中一个数据元素能够有两个或两个以上的直接后继元素. 树的基本概念: 树的概念是学习树的关键所在.掌握了树的基本概念,学会树与二叉树,so easy. 我通过一棵树来了解树的基本概念.例如以下图 1.结点的度 结点的度是子结点的个数.比如:结点1有三个字结点2,3,4,所以结点1的度为3.

Java数据结构和算法(二)——数组

数组的用处是什么呢?--当你需要将30个数进行大小排列的时候,用数组这样的数据结构存储是个很好的选择,当你是一个班的班主任的时候,每次要记录那些学生的缺勤次数的时候,数组也是很有用.数组可以进行插入,删除,查找等. 1)创建和内存分配 Java中有两种数据类型,基本类型和对象类型,也有人称为引用类型,Java中把数组当成对象,创建数组时使用new操作符. int array[] = new int[10]; 既然是对象,那么array便是数组的一个引用,根据Java编程思想(一) -- 一切都是

开启基本数据结构和算法之路--初识Graphviz

在我的Linux刀耕开荒阶段,就想开始重拾C,利用C实现常用的基本数据结构和算法,而数据结构和算法的掌握的熟练程度正是程序的初学者与职业程序员的分水岭. 那么怎么开启这一段历程呢? 按照软件工程的思想,先从需求分析开始,用准确的共同的语言去表达需求,作出规格,到后面的设计,实现,维护. 基本数据结构和算法需求比较明朗,但提高沟通能力要用我们的语言表达出来,然后进行建模,画图分析,设计,最后到实现,优化维护. 对于画图工具,我选择Graphviz.刚开始使用Linux下的PhotoShop--GI

[数据结构与算法]二叉排序(搜索)树实现

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4289804.html 定义 二叉排序树又称二叉查找树或二叉搜索树,它或者是一棵空树,或者是具有如下性质的二叉树:1.若它是左子树非空,则左子树上所有节点的值均小于根节点的值2.若它的右子树非空,则右子树上所有节点的值均大于根节点的值3.左.

数据结构与算法(4)树

树的基本概念: 1.结点的度 结点的度是子结点的个数.例如:结点1有三个字结点2,3,4,所以结点1的度为3. 2.树的度 树的度等于所有结点度中度最高的值.例如:上图中结点度最高为3,所以树的度为3. 3.叶子结点 叶子结点是度为0的结点即没有子结点的结点.例如:上图中3,5,6,7,9,10. 4.分支结点 分支结点是除了叶子结点,树中的其他所有结点.例如:上面树的分支结点为1,2,4,8. 5.内部结点 内部结点是除了根结点以及叶子结点或在分支结点的基础之上在去掉根结点.例如:上面树的内部