0
点赞
收藏
分享

微信扫一扫

Android Jatpack--ViewModel

看山远兮 2023-06-02 阅读 75

给一个有序数组生成平衡搜索二叉树

给一个有序数组生成平衡搜索二叉树

递归生成

先定义一个树结构

  public  class Node{
        public int val;
        public Node left;
        public Node right;

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

代码演示;

 /**
     * 给定一个有序数组 生成平衡搜索二叉树
     * @param arr
     * @return
     */
    public static Node generateNode(int[]arr){
        if (arr == null || arr.length == 0){
            return null;
        }
        //递归函数时
        return process(arr,0,arr.length - 1);
    }

    /**
     * 递归函数
     * @param arr
     * @param L
     * @param R
     * @return
     */
    public static Node process(int[]arr,int L,int R){
        //base case
        if(L > R){
            return null;
        }
        //中间点
        int mid = L +  (R - L)/2;
        Node head = new Node(arr[mid]);
        head.left = process(arr,L,mid - 1);
        head.right = process(arr,mid + 1,R);
        return head;
    }

二叉树专题

二叉树的序列化和反序列化(java)

leetcode 二叉树展开为链表

镜像二叉树和求二叉树最大深度

举报

相关推荐

0 条评论