二叉查找树
简介
二叉树是一种经典的数据结构,每个节点最多有两个子树,通常被称为左子树和右子树
基本概念
根节点:树最上面的节点叫根节点,如下图中的D为根节点
叶子节点:没有子节点的节点叫叶子节点,如下图中的A、C、E、G、J为叶子节点
树的深度:从根节点开始(深度为0)自上而下逐层累加。下图中B、H的深度为1,A、C、F、I的深度为2
树的高度:从叶子节点开始(高度为0)自下而上逐层累加。如下图中F的高度为1,A的高度为0
树的遍历
二叉树的遍历分为,深度优先遍历和广度优先遍历,深度优先遍历主要就是前序遍历、中序遍历、后序遍历,而层次遍历属于广度优先遍历,掌握几种遍历方法,会加深对数据结构的理解,已下图为例,根节点为D,介绍几种遍历
前序遍历
按照先左后右的顺序访问,访问到就输出,输出顺序:父节点->左子树->右子树
- 从根节点出发,首先输出D
- 继续向左访问,输出B
- 继续向左访问,输出A
- 到达叶子节点A,返回结点B,向右访问,输出C
- 返回B,返回D,输出H
- 继续向左访问,输出F
- 继续向左访问,输出E
- 到达叶子节点E,返回结点F,向右访问,输出G
- 返回F,返回H,向右访问,输出I
- 继续向右访问,输出J
最终得到DBACHFEGIJ
中序遍历
按照先左后右的顺序访问,当访问两次的时候输出,输出顺序:左子树->父节点->右子树
- 从根节点D出发,到达B, A
- 到达A,A左子树为空,则返回A,此时A被访问两次,输出A
- 到达B,B被访问两次,输出B
- 到达C, C左子树为空,则返回C,输出C
- 到达D,输出D
- 到达H、F、E,E左子树为空返回E,输出E
- 到达F,输出F
- 到达G,G左子树为空,则返回G,输出G
- 到达F、H,输出H
- 到达I、J, J左子树为空,则返回J,输出J
- 到达I,输出I
最终得到ABCDEFGHJI
后序遍历
按照先左后右的顺序访问,当访问三次的时候输出,输出顺序:左子树 -> 右子树 ->父节点
- 从根节点D出发,到达B
- 到达A,A左子树为空返回A,A右子树为空,返回A,此时A被访问三次,输出A
- 返回B,第二次访问B,不输出B
- 到达C,C的左子树和右子树为空,所以第三次访问C,输出C
- 返回B,B第三次访问,输出B
- 返回D,第二次访问D, 不输出D
- 到达H、F、E,E的左子树和右子树为空,所以第三次访问E,输出E
- 返回F, F第二次访问,不输出F
- 到达G,G的左子树和右子树为空,所以第三次访问G,输出G
- 返回F,F第三次访问,输出F
- 返回H,第二次访问H, 不输出H
- 到达I,I的左子树为空,返回I,第二次访问I, 不输出I
- 到达J,J的左子树和右子树为空,所以第三次访问J,输出J
- 返回I,I第三次访问,输出I
- 返回H,H第三次访问,输出H
- 返回D,D第三次访问,输出D
最终得到ACBEGFJIHD
层序遍历
按照层次的自上而下遍历二叉树
最终得到DBHACFIEGJ

浙公网安备 33010602011771号