二叉树----顺序二叉树、线索二叉树
1、顺序二叉树
1.1、 顺序二叉树的特点
特点
-
顺序二叉树通常只考虑完全二叉树
-
第 n个元素的左子节点为 2 × n + 1
-
第 n个元素的右子节点为 2 × n + 2
-
第 n个元素的父节点为(n-1) ÷2
其中n 表示二叉树中的第几个元素(从0开始编号)
2.2、 顺序二叉树代码实现
注意点:和遍历二叉树类似、不同的地方,是递归的条件变成了2n + 1等,还要注意判断,防止在2n+1的时候,数组越界,所以要加上判断语句
class ArrBinaryTree {
int[] arr;
final int step = 2;
public ArrBinaryTree(int[] arr) {
this.arr = arr;
}
/**
* 数组的前序遍历
*/
public void preTraverse() {
preTraverse(0);
}
/**
* 数组的前序遍历
* @param index 遍历到的数组元素下标
*/
private void preTraverse(int index) {
if(arr == null || arr.length == 0) {
System.out.println("数组为空!");
return;
}
System.out.print(arr[index] + " ");
//向左递归
if((index * step) + 1 < arr.length) {
preTraverse((index * step) + 1);
}
//向右递归
if((index