0
点赞
收藏
分享

微信扫一扫

【一维数组构建二叉树】

尤克乔乔 2022-04-01 阅读 26
public class Test {
    public static void main(String[] args) {
        Solution solution = new Solution();
        Object[] obj = new Object[]{1, null, 2, 3};
        TreeNode root = solution.createBinaryTree(obj);
    }
}


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;
    }
}

class Solution {
    /**
     * 一维数组构建二叉树
     *
     * @param objects
     * @return
     */
    public TreeNode createBinaryTree(Object[] objects) {
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        TreeNode head;
        if (objects.length == 0) {
            return null;
        } else {
            head = new TreeNode(Integer.parseInt(objects[0].toString()));
            queue.add(head);
            int n = 1;
            while (n + 1 < objects.length) {
                TreeNode current = queue.poll();
                if (objects[n] != null) {
                    TreeNode left = new TreeNode(Integer.parseInt(objects[n].toString()));
                    current.left = left;
                    queue.add(left);
                }
                if (objects[n + 1] != null) {
                    TreeNode right = new TreeNode(Integer.parseInt(objects[n + 1].toString()));
                    current.right = right;
                    queue.add(right);
                }
                n += 2;
            }
            if (n == objects.length - 1) {
                if (objects[n] != null) {
                    TreeNode current = queue.poll();
                    TreeNode left = new TreeNode(Integer.parseInt(objects[n].toString()));
                    current.left = left;
                }
            }
            return head;
        }
    }
}
举报

相关推荐

0 条评论