新闻动态 > 新闻 

关于二叉树,你是怎么理解的?

2021年07月12日

原标题:关于二叉树,你是怎么理解的?
关于二叉树,你是怎么理解的?
最近这个问题在知乎上面引起了热议
可能刚开始的同学都有这种困扰,看不懂别人写的题解,看完题解之后仍是一头雾水,不能完全理解,自己实现题解代码的话,写两句就忘记思路。需要重新看别人的代码。不知道从何刷起,看到刷题网站上那么多算法题,就感到头大。
一、我们首先要了解什么是二叉树
在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树通常被用于实现二叉查找树和二叉堆。
二叉树就是一种数据结构,来提高检索效率,结合数据的增删改查,一步步进化,还有B树B+B*这样的数据结构,都是为了一个目的,就是增加效率。二叉排序树是一种比较有用的折衷方案。数组的搜索比较方便,可以直接用下标,但删除或者插入某些元素就比较麻烦。链表与之相反,删除和插入元素很快,但查找很慢。二叉排序树就既有链表的好处,也有数组的好处。在处理大批量的动态的数据是比较有用。
二、二叉树的遍历
是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。
前序 中 左 右
中序 左 中 右
后序 左 右 中
st=>start: 开始
e=>end: 结束
op=>operation: 根结点
op2=>operation: 左子树
io=>inputoutput: 右子树
cond=>condition: 二叉树是否为空?
st->cond
cond(yes)->e
cond(no)->e
op->op2->io->e
二、二叉树遍历原理
二叉树的遍历:是指从根结点出发,按照某种次序依次访问二叉树中的所有结点,使得每个结点被访问一次且仅被访问一次。
这里有两个关键词:访问和次序。
访问其实是要根据实际的需要来确定具体做什么,比如对每个结点进行相关计算,输出打印等。它算作是一个抽象操作。
二叉树的遍历次序不同于线性结构,最多也就是从头到尾、循环和双向等简单的遍历方式。树的结点之间不存在唯一的前驱和后继关系,在访问一个结点后,下一个被访问的结点面临着不同的选择。
以上只是简单的了解什么是二叉树,二叉树新增删除的时候还有很多算法,大家可以去了解下。本文好多文字和图片都是来自各个博客,创新比较少,不过看明白别人写的内容,自己也是一种成长,因为刚看二叉树的时候看了很多博客,真的不是很懂,最后看的多了,在有别人给讲讲就清晰很多了,一些算法什么的大家也可以去研究下。技多不压身。