博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图说二叉树添加数据原理以及遍历原理
阅读量:5303 次
发布时间:2019-06-14

本文共 1258 字,大约阅读时间需要 4 分钟。

一、图说二叉树添加数据原理

前提说明:

有一个学生类Student,属性:name,age;

排序:只实现age排序,即只要年龄相同则认为是相同对象(因为是说明添加原理,只要弄懂了最简单的一种,即使有多个排序,都会知道其添加方式,所以这里就用最简单的方式进行说明了)


见下图

这里写图片描述

这里写图片描述


细说步骤:

1,添加第一个数据252,添加第二个数据23,比25小,添加在左边3,添加第三个数据18,比25小,添加在左边,再与23比较,比23小,添加在23左边4,添加第四个数据30,比25大,添加在右边5,添加第五个数据28,比25大,添加在右边,再与30比较,比30小,添加在30左边6,添加第六个数据7,比25小,添加在左边,再与最左边的数据18比较,比18小,添加在左边7,添加第七个数据43,比25大,添加在右边,再与最右边的数据30比较,比30大,添加在30的右边。{特别说明:若第七个数据为29,那么先于最右边数据30比较,比30小,添加在30左边,再与28比较,比28大,添加在28右边}8,添加第八个数据8,比25小,添加在左边,再与最左边数据7进行比较,比7大,添加在7右边

注意:每次都是先于根(第一个数据)进行比较,之后与对应侧(最左侧或最右侧数据)进行比较,来判定相对于该数据的左右

特别说明:最左侧和最右侧是指根分支下的两个大分支的数据

示例中根的两大分支下的数据分别如下:

左侧:23,18,7
右侧:30,43


二、二叉树遍历原理

这里只说一种遍历方式的原理,因为只要弄懂这一种的原理,其他遍历方式的原理自然也就懂了。

前序遍历:先访问根节点,再访问左子树,最后访问右子树

中序遍历:先访问左子树,再访问根节点,最后访问右子树

后序遍历:先访问左子树,再访问右子树,最后访问根节点

层序遍历:每一层从左到右访问每一个节点。

图中的写的序号是添加数据时的顺序:

这里写图片描述

细说前序遍历:先访问根节点,再访问左子树,最后访问右子树

注意:这里说的左右子树,是指一个节点的左右,这里应该先把25左侧遍历完,再遍历右侧。都是先遍历每个节点的左侧,遍历完后再遍历右侧

1,先访问根节点:25    先遍历25的左子树:2,再访问左子树:23,18,7,203,再访问右子树:9    25的左子树遍历完毕,开始遍历右子树:4,再访问25右子树内容:30,285,再访问下一层:43,38,366,在访问下一层:45最后的遍历结果为:25,23,18,7,20,9,30,28,43,38,36,45

其他:中序,后序- - - - -与前序类似

细说层序遍历:每一层从左到右访问每一个节点

1,层序遍历是一层一层的遍历的2,第一层:253,第二层:23,304,第三层:18,28,435,第四层:7,38,456,第五层:20,9,36最后的遍历结果是:25,23,30,18,28,43,7,38,45,20,9,36

转载于:https://www.cnblogs.com/TCB-Java/p/6809623.html

你可能感兴趣的文章
Python---xml
查看>>
网络协议
查看>>
【poj2367】Genealogical tree
查看>>
Alpha 冲刺 (6/10)
查看>>
error C2512: “Name”: 没有合适的默认构造函数可用
查看>>
《算法导论》习题解答 Chapter 22.1-3(转置图)
查看>>
Delphi GDI对象之位图与调色板
查看>>
190. Reverse Bits
查看>>
CMS: 内容管理系统
查看>>
pscp命令详解
查看>>
Linux系统目录结构
查看>>
新浪新闻采集程序
查看>>
SQL语句
查看>>
idea下使用autowire注解注入对象,结果初始化不到类
查看>>
java 类文件类型
查看>>
day04_03 题目判断三个数字中的最大值
查看>>
JavaScript中的单例模式
查看>>
读书笔记:对线程模型的批评
查看>>
Runnable案例
查看>>
软工团队项目函数说明
查看>>