leetcode TreeNode类 --java

发布时间 2023-06-29 17:39:01作者: laremehpe
public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    public TreeNode() {
    }

    public TreeNode(int val) {
        this.val = val;
    }

    public TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }

    public static TreeNode generator(Integer[] arr) {
        if ((arr.length - 1) % 2 != 0) {
            System.out.println("is not a valid tree array!!!");
            return null;
        }
        TreeNode res = new TreeNode(0, branch(1, arr), branch(2, arr));
        return res;
    }

    private static TreeNode branch(int index, Integer[] arr) {
        if (index >= arr.length || arr[index] == null) return null;
        TreeNode left = index * 2 + 1 < arr.length ? branch(index * 2 + 1, arr) : null;
        TreeNode right = index * 2 + 2 < arr.length ? branch(index * 2 + 1 + 2, arr) : null;
        TreeNode res = new TreeNode(arr[index], left, right);
        return res;
    }

    public void print(TreeNode root) {

    }

    public void print(Integer[] root) {
        print(generator(root));
    }

    public static int depth(TreeNode tree, int layer) {
        if (tree == null) return layer;
        return Math.max(depth(tree.left, layer + 1), depth(tree.right, layer + 1));
    }
}