二叉树的概念以及个人见解

446 阅读2分钟

二叉树

u.jpgs.jpg

树是一个特殊结构的存储类型,而二叉树是树形结构的拓展。树形结构的是由一个根节点于无数个子节点构成,而
每一个子节点又形成根节点连接着无数个子节点,而二叉树就相当简单,每一个根节点最多只有俩个子节点,分别
为左节点和右节点,所以二叉树的结构与算法都较为简单。

 

二叉树的相关概念,如,根节点,叶节点,左子树,右子树,兄弟节点,父节点,子孙节点,左节点,右节点树高
度,节点层数,路径等基本概念。

 

 

二叉树分类

 

完全二叉树

u2.jpg

形容一个二叉树高度为h,除了h层外,每次的子节点都达到最大个数,并且,每层子节点都根据从左到右依次向下
排布,这就是完全二叉树

 

满二叉树

u3.jpg

形容一个二叉树除了叶节点每一个子节点都有左右子节点,这样的二叉树被称作满二叉树

 

扩充二叉树

u4 (2).jpg

扩充二叉树是对已有的二叉树进行扩充,扩充后的二叉树的所有子节点的父节点有两个子节点的不动,只有一个子
节点的扩充一个,而叶子节点都扩充两个子节点,这样就使每一个根节点都有两个子节点,除了扩充后的叶子节
点,这种就叫做扩充二叉树。

 

平衡二叉树

u5 (2).jpg

可以空树,如果不是空树,那么根节点的左右子树高度之差不超过一的二叉树就叫平衡二叉树,注意是高度不是节点数!

 

二叉树的遍历

前序遍历:root -> left -> right

中序遍历:left -> root -> right

后续遍历:left ->right -> root

u6.jpg

 

树类搜索算法

一般来说就是深度优先搜索,广度优先搜索,A搜索,IDA搜索等几种,通常用的最多就是DFS和BFS。

 

DFS 简述

u8.jpg

顾名思义,深度优先,则是以深度为准则,先一条路走到底,直到达到目标。这里称之为递归下去。否则既没有达
到目标又无路可走了,那么则退回到上一步的状态,走其他路。

 

BFS 简述

u7.jpg

 广度优先则是和深度相反的思想,深度是一条路走到尽头再回溯,而广度就像是水平的深度,他是将每一层都走
 完,并且记录走的每一步,最后再去下一层。

 

 

总结

DFS用递归的形式,用到了栈结构,先进后出。

BFS选取状态用队列的形式,先进先出。

思想上来说这两种方法都是穷竭列举所有的情况。