根据二维数组创建二叉树Java

根据二维数组创建二叉树Java

在LeetCode刷题的时候,遇到二叉树的题目,想要自己在Idea上调试,发现不会创建二叉树。查了资料后,记录一下,根据二维数组递归创建二叉树。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
public TreeNode createBTree(int[] array, int index) {
        TreeNode tn = null;
        if (index < array.length) {
            int value = array[index];
            //如果当前数组值为-1则说明该节点为空
            if (array[index] == -1) {
                return tn;
            }
            // 根节点
            tn = new TreeNode(value);
            // 递归建立左孩子节点
            tn.left = createBTree(array, 2 * index + 1);
            // 递归建立右孩子节点
            tn.right = createBTree(array, 2 * index + 2);
        }
        return tn;
    }

测试

public static void main(String[] args) {
        int[] tree = new int[]{3, 9, 20, -1, -1, -1, 7};
        TreeNode root = new TreeNode().createBTree(tree, 0);
        //前序遍历
        new TreeNode().preOrder(root);
        System.out.println();
        //中序遍历
        new TreeNode().inOrder(root);
        System.out.println();
        //后序遍历
        new TreeNode().postOrder(root);
    }

在这里插入图片描述

在这里插入图片描述


版权声明:本文为qq_35253136原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。