数据结构---二叉树

296 阅读2分钟

  • 度:指的是结点所拥有的子树的个数
  • 叶子:度为0的结点成为叶子
  • 非终端结点:如:B,C,E
  • 双亲:指的是一个结点。如:G的双亲结点是A
  • 兄弟:E和F叫兄弟。
  • 高度:结点 到达 最长叶子结点的边数长度如A:3,D:2,I:0
  • 深度:从根结点到当前结点的边数长度。如D的深度(A到D的边数长度)为:1

二.二叉树

每个结点 最多只有两个 子树 分左子树和右子树的,不能随便交叉

  • 左斜树 右斜树

  • (对称)所有的分支结点都存在 左右子树,且所有叶子都在同一层级上

  • 满二叉树一定是完全二叉树
  • 按照程序编号顺序(编号是连续的)来的

二叉树的顺序存储结构分析

  • 没有值的地方赋值为空

总结:

存储完全二叉树的时候 采用顺序存储,其他的用链式存储

三.代码实现:

1.初始化

2.(创建一个二叉树)插入

3.清空

它们两个一个性质,直接改个名字即可.清空和初始化都是空赋值nil

4.二叉树判断为空

5.二叉树深度

  • 根结点到最后一个叶子结点的最长路径
  • powl:2的j次方

6.处于e位置上结点值

结点的左孩子/右孩子,双亲结点

二叉树的遍历

  • 访问(一次)
  • 秩序

前序遍历

-前序: 中左右

中序遍历

  • 左中右

后序遍历

  • 左右中

层序遍历

二叉树的链式存储

初始化

构建二叉树

创建二叉树

二叉树遍历

  • 先序遍历
  • 中序遍历
  • 后序遍历

判断二叉树为空

二叉树的深度

返回根的结点