LeetCode 109. 有序链表转换二叉搜索树
题目描述
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。
高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。
示例 1:
输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
LeetCode 109. 有序链表转换二叉搜索树
提示:
head 中的节点数在[0, 2 * 104] 范围内
-105 <= Node.val <= 105
一、解题关键词
二、解题报告
1.思路分析
2.时间复杂度
3.代码示例
class Solution {
ListNode myNode;
public TreeNode sortedListToBST(ListNode head) {
myNode = head;
int len = getLen(head);
return buildTree(0,len - 1);
}
int getLen(ListNode head){
int res = 0;
while(null != head){
++ res;
head = head.next;
}
return res;
}
TreeNode buildTree(int start , int end ){
if(start > end){
return null;
}
int mid = (start + end + 1) / 2;
TreeNode node = new TreeNode();
node.left = buildTree(start,mid - 1);
node.val = myNode.val;
myNode = myNode.next;
node.right = buildTree(mid + 1,end);
return node;
}
}
2.知识点
左右子树分开递归处理
总结