本文共 684 字,大约阅读时间需要 2 分钟。
题目:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
题解:对其用遍历的形式,来生成二叉树。
package com.lcz.leetcode;/** * 将有序数组转换为二叉搜索树 * @author LvChaoZhang * */public class Leetcode108 { class TreeNode{ int val; TreeNode left; TreeNode right; TreeNode(int x){ val = x; } } public TreeNode sortedArrayToBST(int[] nums) { return dfs(nums,0,nums.length-1); } private TreeNode dfs(int[] nums,int left,int right) { // 截止条件 if(left>right) { return null; } // 构建根节点 int mid = left+(right-left)/2; TreeNode root = new TreeNode(nums[mid]); // 递归构建 root.left = dfs(nums,left,mid-1); root.right = dfs(nums,mid+1,right); return root; }}
转载地址:http://swwdf.baihongyu.com/