博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Convert Sorted Array to Binary Search Tree leetcode java
阅读量:5876 次
发布时间:2019-06-19

本文共 974 字,大约阅读时间需要 3 分钟。

题目

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

 

题解

先复习下什么是二叉搜索树(引自Wikipedia):

二叉查找树Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的:

  1. 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  2. 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  3. 任意节点的左、右子树也分别为二叉查找树。

 

 

再复习下什么是平衡二叉树(引自GeekforGeek):

An empty tree is height-balanced. A non-empty binary tree T is balanced if:

   1) Left subtree of T is balanced
   2) Right subtree of T is balanced
   3) The difference between heights of left subtree and right subtree is not more than 1. 

 

解决方法是选中点构造根节点,然后递归的构造左子树和右子树。

代码如下:

 1     
public TreeNode buildTree(
int[] num, 
int low, 
int high){
 2         
if(low>high)
 3             
return 
null;
 4         
 5         
int mid = (low+high)/2;
 6         TreeNode node = 
new TreeNode(num[mid]);
 7         node.left = buildTree(num,low,mid-1);
 8         node.right = buildTree(num,mid+1,high);
 9         
return node;
10     }
11     
public TreeNode sortedArrayToBST(
int[] num) {
12        
return buildTree(num,0,num.length-1);
13     }

 

 

转载地址:http://njzix.baihongyu.com/

你可能感兴趣的文章
bond的7种模式原理
查看>>
C语言的简单函数定义与调用
查看>>
二维码
查看>>
7-24
查看>>
spring中的JdbcTemplate简单记录
查看>>
pygame连载
查看>>
寒冰linux视频教程笔记12 计划任务
查看>>
在C盘上安装安装Windows Server 2008
查看>>
Servlet3.1 edr 规范中文版下载
查看>>
Magento支付宝插件V6.1旗舰版发布,支持即时到账、担保交易,新增订单重新支付功能!...
查看>>
基于Annotation方式的SpringMVC4+Spring4+Hibernate4
查看>>
我的友情链接
查看>>
git add 项目文件 改动
查看>>
GAP
查看>>
C/C++中的引用和指针
查看>>
CISCO PIX515 在企业应用中的布署
查看>>
学习笔记-Exchange Web Service API-概述
查看>>
idea创建Web项目
查看>>
zabbix管理一之zabbix的简介
查看>>
VRP命令行基础-路由交换原理8-【HCNA笔记】
查看>>