一、概念
1、节点
- 父节点
- 子节点
- 兄弟节点:同一父节点的节点
- 根节点:没有父节点的节点
- 叶节点:没有字节点的节点
2 深度 高度 层
- 高度:从下向上数
- 深度:从上向下数
- 层:
3 满二叉树 完全二叉树
满二叉树:
- 叶子节点都在最底层;
- 除叶子节点,其余节点都包含左右两个节点
完全二叉树: - 除了最后一层,其他层节点数都要达到最大
- 最后一层叶节点都靠左排列
4 二叉树的遍历
根据根节点的顺序命名
前序遍历:根左右
中序遍历:左根右
后序遍历:左右根
二、代码实现
基于数组的顺序存储法
适用:完全二叉树,
方法:
假设根节点在数组下标为i,且i=1
根节点的左子节点:i * 2
根节点的右子节点:i * 2+1
核心代码:
前提条件:数组data存储完全二叉树的数据
///<summary>
///
///<param name="index"></param>
///</summary>
private void preOrder(int index)
{
if(index>=data.Count||data[index].IsNullOrEmpty()){
return ;
}
int num=index;
Console.write(data[index]+" ");
var leftNum=num*2;
var rightNum=num*2+1;
preOrder(leftNum);
preOrder(rightNum);
}