数组构建二叉树
arrayToBinaryTree(Integer[] arr) 方法
功能: 将一个整数数组转换为二叉树。
实现:
- 首先检查数组是否为空或长度为0,若是则返回null。
- 创建树的根节点,并将其添加到一个队列中。
- 使用队列按层次遍历数组中的元素,逐步构建树的左子节点和右子节点。
- 每处理一个节点后,将其子节点添加到队列中,以便处理下一层。
import com.wr.base.TreeNode;
import java.util.LinkedList;
import java.util.Queue;
public class BinaryTreeBuilder {
public static TreeNode arrayToBinaryTree(Integer[] arr) {
if (arr == null || arr.length == 0) {
return null;
}
TreeNode root = new TreeNode(arr[0]);
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
int index = 1;
while (index < arr.length) {
TreeNode current = queue.poll();
if (index < arr.length && arr[index] != null) {
current.left = new TreeNode(arr[index]);
queue.add(current.left);
}
index ++;
if (index < arr.length && arr[index] != null) {
current.right = new TreeNode(arr[index]);
queue.add(current.right);
}
index ++;
}
return root;
}
public static void main(String[] args) {
Integer[] arr = {3, 9, 20, null, null, 15, 7};
TreeNode root = arrayToBinaryTree(arr);
printTree(root, "", true);
}
}