二叉查找树

简介

二叉树是一种经典的数据结构,每个节点最多有两个子树,通常被称为左子树和右子树

基本概念

根节点:树最上面的节点叫根节点,如下图中的D为根节点

叶子节点:没有子节点的节点叫叶子节点,如下图中的A、C、E、G、J为叶子节点

树的深度:从根节点开始(深度为0)自上而下逐层累加。下图中B、H的深度为1,A、C、F、I的深度为2

树的高度:从叶子节点开始(高度为0)自下而上逐层累加。如下图中F的高度为1,A的高度为0

树的遍历

二叉树的遍历分为,深度优先遍历和广度优先遍历,深度优先遍历主要就是前序遍历、中序遍历、后序遍历,而层次遍历属于广度优先遍历,掌握几种遍历方法,会加深对数据结构的理解,已下图为例,根节点为D,介绍几种遍历

前序遍历

按照先左后右的顺序访问,访问到就输出,输出顺序:父节点->左子树->右子树

  1. 从根节点出发,首先输出D
  2. 继续向左访问,输出B
  3. 继续向左访问,输出A
  4. 到达叶子节点A,返回结点B,向右访问,输出C
  5. 返回B,返回D,输出H
  6. 继续向左访问,输出F
  7. 继续向左访问,输出E
  8. 到达叶子节点E,返回结点F,向右访问,输出G
  9. 返回F,返回H,向右访问,输出I
  10. 继续向右访问,输出J

最终得到DBACHFEGIJ

中序遍历

按照先左后右的顺序访问,当访问两次的时候输出,输出顺序:左子树->父节点->右子树

  1. 从根节点D出发,到达B, A
  2. 到达A,A左子树为空,则返回A,此时A被访问两次,输出A
  3. 到达B,B被访问两次,输出B
  4. 到达C, C左子树为空,则返回C,输出C
  5. 到达D,输出D
  6. 到达H、F、E,E左子树为空返回E,输出E
  7. 到达F,输出F
  8. 到达G,G左子树为空,则返回G,输出G
  9. 到达F、H,输出H
  10. 到达I、J, J左子树为空,则返回J,输出J
  11. 到达I,输出I

最终得到ABCDEFGHJI

后序遍历

按照先左后右的顺序访问,当访问三次的时候输出,输出顺序:左子树 -> 右子树 ->父节点

  1. 从根节点D出发,到达B
  2. 到达A,A左子树为空返回A,A右子树为空,返回A,此时A被访问三次,输出A
  3. 返回B,第二次访问B,不输出B
  4. 到达C,C的左子树和右子树为空,所以第三次访问C,输出C
  5. 返回B,B第三次访问,输出B
  6. 返回D,第二次访问D, 不输出D
  7. 到达H、F、E,E的左子树和右子树为空,所以第三次访问E,输出E
  8. 返回F, F第二次访问,不输出F
  9. 到达G,G的左子树和右子树为空,所以第三次访问G,输出G
  10. 返回F,F第三次访问,输出F
  11. 返回H,第二次访问H, 不输出H
  12. 到达I,I的左子树为空,返回I,第二次访问I, 不输出I
  13. 到达J,J的左子树和右子树为空,所以第三次访问J,输出J
  14. 返回I,I第三次访问,输出I
  15. 返回H,H第三次访问,输出H
  16. 返回D,D第三次访问,输出D

最终得到ACBEGFJIHD

层序遍历

按照层次的自上而下遍历二叉树

最终得到DBHACFIEGJ

posted @ 2021-01-29 12:10  于是长大了  阅读(106)  评论(0)    收藏  举报