数据类型:树
二叉树:一个有穷的节点集合,集合可以为空,若不为空,则它是由根节点和左右两个不相交的二叉树组成,左子树叫TL,右子树叫TR
这五种情况都叫二叉树:
-
1.空 2.只有A 3.AB 4.AC 5.ABC
-
还有几种情况有特殊叫法
- 斜二叉树
- 满二叉树
- 完全二叉树
节点
- Tree: n(n>=0)个节点构成的有限集合
- N=0叫空树
- 每个非空的树,都有一个根节点,Root,用r表示。
- 其余节点可分为m(m>0)个互不相交的有限集合
- 每个集合又是一棵树,成为原来的子树(SubTree)
- 树和非树:子树是不相交的,除了根节点外,每个子节点有且只有一个父节点,一棵树N个节点的树有N-1条边
一些基本术语
节点的度(Degree):节点的子树的个数
树的度:树的所有节点中最大的度数
叶子节点(leaf):度为0的节点
父节点(Parent)
子节点(Child)
兄弟节点(Sibiling):具有同一父节点的各节点彼此是兄弟节点
祖先节点:沿树根到某一节点路径上所有节点
子孙节点:某一节点的子树中所有节点
树的深度:树中节点最大层次就是树的深度
二叉树涉及的操作:
1.boolean isEmpty(BT tree),判断BT是否为空
2.Void traversal(Bt tree),按某种顺序遍历
3.BT createBT(),创建一个二叉树
二叉树的遍历方式
先序遍历
- 1.先访问根节点
- 2.先序遍历左子树
- 3.先序遍历右子树
中序遍历
- 1.中序遍历左子树
- 2.访问根节点
- 3.中序遍历右子树
后序遍历
- 1.后序访问左子树
- 2.后序遍历右子树
- 访问根节点