一、定义二叉树
二叉树可以保存在数组,节点在树中位置与数组中索引相关,
比如最后一个根节点 index= N/2向下取整,i 的左节点 索引是 2i 右节点 2i+1 (从一开始)
public class TreeByList {
//数组记录节点 适用于完全二叉树 不然很浪费空间
static String[] s = new String[] { "1", "2", "3", "4", "5", "6", "7", "8" };
public static class Node {
Node left;
Node right;
String data;
Node(String data) {
this.data = data;
this.left = null;
this.right = null;
}
}
public static LinkedList<Node> nodeList = new LinkedList<Node>();
public static void initTree() {
// 初始化所有数组元素为链表节点
for (String str : s) {
nodeList.add(new Node(str));
}
int len = s.length;
int rootIndex;
//完全二叉树特点 最后根节点在数组索引是 总数/2 向下取整
for (rootIndex = 0; rootIndex < len / 2 - 1; rootIndex++) {
int leftIndex = rootIndex * 2 + 1;
int rightIndex &