• NC_11_SORTEDARRAY_2_BST


    package org.example.interview.practice;
    
    /**
     * @author xianzhe.ma
     * @date 2021/8/18
     * 升序数组转二叉平衡树
     */
    
    public class NC_11_SORTEDARRAY_2_BST {
    
        public TreeNode sortedArrayToBST (int[] nums) {
            // 判断特殊情况, 数组为空,或数组上没有元素,直接返回 null
            if (nums == null || nums.length == 0) {
                return null;
            }
    
            return process(nums, 0, nums.length - 1);
        }
    
    
        /**
         *
         * @param nums  整个的有序数组
         * @param left  数组的左边界, 闭区间
         * @param right 数组的右边界, 闭区间
         * @return nums[left ... right] 这个范围的数组,转成 BST 后的根节点
         */
        public TreeNode process(int[] nums, int left, int right) {
            // 左边界 比 右边界 大, 说明数组上没有元素,直接返回 null
            if (left > right) {
                return null;
            }
            // 如果只有一个元素,就把它当成根节点直接返回
            if (left == right) {
                TreeNode root = new TreeNode(nums[left]);
                return root;
            }
    
            // nums[left ... right] 这个数组的长度
            int len = right - left + 1;
            // nums[left ... right] 这个数组的中点下标,这个下标里的元素值就是 BST 的根节点的值
            int mid = left + len / 2;
            TreeNode root = new TreeNode(nums[mid]);
            // 找出根节点的左子树: 继续递归用这个方法,找出左子树上这个局部范围的BST的根节点
            root.left = process(nums, left, mid - 1);
            // 找出根节点的右子树: 继续递归用这个方法,找出右子树上这个局部范围的BST的根节点
            root.right = process(nums, mid + 1, right);
            return root;
        }
    
        public class TreeNode {
            int val = 0;
            TreeNode left = null;
            TreeNode right = null;
    
            public TreeNode(int val) {
                this.val = val;
            }
        }
    }
  • 相关阅读:
    单个对象的内存管理分析
    在eclipse中引入jquery.js文件报错的解决方案
    ajax复习
    jquery介绍
    ajax调试小技巧
    ajax实现聊天室功能
    ajax(2)
    ajax经典案例--省市联动
    ajax技术返回json如何处理
    ajax如何处理返回的数据格式是xml的情况
  • 原文地址:https://www.cnblogs.com/juniorMa/p/15879386.html
Copyright © 2020-2023  润新知