数据结构-将升序数组转化为平衡二叉搜索树-java

1.题目

给定一个升序排序的数组,将其转化为平衡二叉搜索树(BST).
平衡二叉搜索树指树上每个节点 node 都满足左子树中所有节点的的值都小于 node 的值,右子树中所有节点的值都大于 node 的值,并且左右子树的节点数量之差不大于1.

2.代码

public class Test {
    
    

      public static class TreeNode {
    
    
          public TreeNode(int val) {
    
    
              this.val = val;
          }
            int val = 0;
            TreeNode left = null;
            TreeNode right = null;
      }

    public static TreeNode sorted (int[] num,int left,int right) {
    
    
        // write code here
        if (left>right){
    
    
            return null;
        }
        int mid = (left+right+1)/2;

        TreeNode treeNode = new TreeNode(num[mid]);
        treeNode.left  = sorted(num, left, mid-1);  // 构建左子树
        treeNode.right = sorted(num, mid+1, right);  // 构建右子树
        return treeNode;
    }

    public static TreeNode sortedArrayToBST (int[] num) {
    
    
        // write code here
        return sorted(num,0,num.length-1);
    }

    public static void main(String[] args) {
    
    

    }
}

猜你喜欢

转载自blog.csdn.net/qq_25064691/article/details/121453113