二叉树常见算法总结-基本二叉树

原创 2016年08月29日 16:08:35

二叉树是最经典的数据结构之一,其结构类型和算法操作也是十分多,今天来做一个总结(今天先不讨论对B树,红黑树那种比较高级的数据结构)。
树结构,一般用节点引用两个子节点作为左右节点。结构代码如下
这里写图片描述
PS:有些时候也要有个指针指向父节点的,比如剑指offer那里有个题目是寻找中序遍历的时候要你寻找给出的节点在中序遍历的时候下一个节点是什么,这时候就需要了。
好了,现在先讨论一下二叉树的四种遍历算法,先序,中序,后序遍历,以及层次遍历。先序遍历就是先访问父节点,然后再访问左子树和右子树。中序就是先访问左子树,然后访问父节点,最后访问右子树。后序就是先访问左子树,和右子树,最后访问父节点。很抽象吧。先上代码,其实对着代码好好想下就很清晰了。
这里写图片描述这里写图片描述
这里写图片描述
下面我们来看看怎么实现层次遍历的,其实层次遍历是借助一个队列去实现的,而剑指offer里面也很多题目需要我们用到层次遍历的变形。
这里写图片描述
现在我们讨论一下他们的算法复杂度,其实这个也很简单,因为每个节点都被访问了一次,所以他的时间复杂度显而易见是O(n)。(PS:这个我面试YY和网易都被问到了)
然后怎么求二叉树的高度呢,这里也给出他的实现
这里写图片描述
为什么我们总是讨论二叉树而不讨论3,4,5个节点的树呢,其实很简单。树都可以用二叉树表示的。树我们一个比较好的表示方法是父节点记录长子(第一个子节点),然后子节点之间使用引用来进行沟通。如下面代码这里写图片描述
其实敏感的同学也看出来了,树节点的类结构和二叉树是完全一样的,这也就是为什么树可以用二叉树进行表示了这里写图片描述
然后我们把父节点到长子的边作为左边,兄弟链表之间引用作为右边就可以转化为这里写图片描述
现在我们就很清楚看到为什么可以把二叉树来表示各种树的原因啦!

二叉树常用操作算法集、解释及注意事项

二叉树是一种常用的数据结构,在程序中也经常需要使用二叉树,但是你所使用语言却并不一定提供了二叉树这种数据类型,所以为了方便使用,我们可以自己实现一个二叉树的数据类型。在需要时就像使用其他已定义的类型一...

二叉树常见算法总结(一)

一、在二叉树中,找到距离最远的两个节点的距离 在二叉树中,找到距离最远的两个节点的距离。在上面的二叉树中,最远的节点的距离是:4(路径是2-3-13-5-2)。 解决思路:遍历...

各种基本算法实现小结(三)—— 树与二叉树

转载地址:http://blog.csdn.net/sunboy_2050/article/details/5645824     各种基本算法实现小结(三)—— 树与二叉树 (均已测试通过)...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

数据结构之树和二叉树算法实现(C语言)

待我学有所成,结发与蕊可好。@夏瑾墨 开发环境为Dev-C++ 5.11 编译器:MinGW GCC 6.1.0 64-bit 一、算法程序组建目录结构如下: 第一部分:头文件 1. c...

二叉树基本算法

二叉树基本算法,遍历以及求高度、宽度等路径 //二叉树的相关算法,《数据结构习题与解析》7.3 //算法 49个,代码量1200+ ,时间9小时   #include #...

20-数据结构_树-操作-遍历_树的应用

四, 操作(通常为二叉树的操作) 1, 树的遍历    将非线性的树转换成线性的,有三种规则:      1) 先序遍历        根 左 右:         A. 先 访问根结点...

二叉树常见算法总结(一)

一、在二叉树中,找到距离最远的两个节点的距离 在二叉树中,找到距离最远的两个节点的距离。在上面的二叉树中,最远的节点的距离是:4(路径是2-3-13-5-2)。 解决思路:遍历...

BiTree 二叉树 基础算法及常见题目总结

1,对二叉树的几个相关概念的理清(概念内容均来自算法导论附录B的内容) (1),树:是一个连通的,无回路的无向图,如果无向图是无回路但是非连通的,称为“森林“     (2),有根树和...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树常见算法总结-基本二叉树
举报原因:
原因补充:

(最多只允许输入30个字)