创建二叉树采用递归实现。
遍历二叉树采用前序遍历,也用递归实现。
public class TreeNodeCreate {
static class TreeNode {
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int data) {
this.val = data;
}
}
public static void main(String[] args) {
int[] a = new int[]{1, 2, 2, 3, 4, 4, 3};
TreeNode head = createBinaryTree(a, 0);
preOrderTraverse(head);
}
public static TreeNode createBinaryTree(int[] array, int index) {
TreeNode treeNode = null;
if (index < array.length) {
treeNode = new TreeNode(array[index]);
// 对于顺序存储的完全二叉树,如果某个节点的索引为index
// 其对应的左子树的索引为2*index+1,右子树为2*index+2
treeNode.left = createBinaryTree(array, 2 * index + 1);
treeNode.right = createBinaryTree(array, 2 * index + 2);
}
return treeNode;
}
public static void preOrderTraverse(TreeNode root) {
if (root != null) {
//先序遍历,中,左,右
System.out.print(root.val + " ");
preOrderTraverse(root.left);
preOrderTraverse(root.right);
}
}
}
运行结果:
image.png