【LeetCode】C# 108、Convert Sorted Array to Binary Search Tree

来源:互联网 发布:怎么清除小米云端数据 编辑:程序博客网 时间:2024/05/25 01:35

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

题意:给定一个升序数组,把他们转化为一个高度平衡的BST。
思路:height balanced BST的定义有如下。
一个是左右子树都为高平衡的查找二叉树。
一个是所有节点的左右子树高度差不大于1。
所以思路在于用递归,每个循环中把有序数组的中点作为根。每次把其左右数列转化为左右子树。然后把左右序列分别进入下一轮递归。

/** * Definition for a binary tree node. * public class TreeNode { *     public int val; *     public TreeNode left; *     public TreeNode right; *     public TreeNode(int x) { val = x; } * } */public class Solution {    public TreeNode SortedArrayToBST(int[] nums) {        if(nums.Length==0) return null;        return getmid(nums,0,nums.Length-1);    }    public TreeNode getmid(int[] nums,int l,int r){        if(l>r) return null;        int mid = (l+r)/2;        TreeNode tree = new TreeNode(nums[mid]);        tree.left = getmid(nums,l,mid-1);        tree.right = getmid(nums,mid+1,r);        return tree;    }}
阅读全文
0 0
原创粉丝点击