最小高度树

给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。

示例:
给定有序数组: [-10,-3,0,5,9],
一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

      0
/ \
-3 9
/ /
-10 5
  • 1
  • 2
  • 3
  • 4
  • 5

题意:让我们根据给的有序数组,创建一个高度最小的二叉树。

思路:递归求解,sortedArrayToBST方法中传入的数组,我们取数组的中间值为根节点,然后将数组的左半部分传入sortedArrayToBST方法,这样返回的就是左子树的根节点,赋值给node.left ;将数组的右半部分传入sortedArrayToBST方法,这样返回的就是右子树的根节点,赋值给node.right ,就这样一直递归下去,最后机就构建成了一棵高度最小的二叉搜索树。

正确代码:

class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if(nums.length==0)
return null;
TreeNode node = new TreeNode(nums[nums.length/2]);
node.left = sortedArrayToBST(Arrays.copyOfRange(nums,0,nums.length/2));
node.right = sortedArrayToBST(Arrays.copyOfRange(nums,nums.length/2+1,nums.length));
return node;
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

完整代码(含测试代码):

package com.Keafmd.day0102;

import java.util.Arrays;

/**
* Keafmd
*
* @ClassName: MinimumHeightTree
* @Description: 最小高度树
* @author: 牛哄哄的柯南
* @date: 2021-01-02 19:29
*/
public class MinimumHeightTree {
public static void main(String[] args) { Solution01022 solution01022 = new Solution01022();
int []nums={-10,-3,0,5,9};
TreeNode result = solution01022.sortedArrayToBST(nums);
System.out.println(result.val);
System.out.println(result.left.val);
System.out.println(result.right.val);
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
class Solution01022 {
public TreeNode sortedArrayToBST(int[] nums) {
if(nums.length==0)
return null;
TreeNode node = new TreeNode(nums[nums.length/2]);
node.left = sortedArrayToBST(Arrays.copyOfRange(nums,0,nums.length/2));
node.right = sortedArrayToBST(Arrays.copyOfRange(nums,nums.length/2+1,nums.length));
return node;
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

输出结果:

0
-3
9 Process finished with exit code 0
  • 1
  • 2
  • 3
  • 4
  • 5

看完如果对你有帮助,感谢点赞支持!
如果你是电脑端,看到右下角的 “一键三连” 了吗,没错点它[哈哈]

加油!

共同努力!

Keafmd

原文章:https://blog.csdn.net/weixin_43883917/article/details/112121618

最小高度树Java版本(力扣)的更多相关文章

  1. Java实现 LeetCode 310 最小高度树

    310. 最小高度树 对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树.给出这样的一个图,写出一个函数找到所有的最小高度树 ...

  2. leetcode.310最小高度树

    对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树.给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点. ...

  3. [LeetCode] Minimum Height Trees 最小高度树

    For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ...

  4. Leetcode 310.最小高度树

    最小高度树 对于一个具有树特征的无向图,我们可选择任何一个节点作为根.图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树.给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们 ...

  5. [Swift]LeetCode310. 最小高度树 | Minimum Height Trees

    For an undirected graph with tree characteristics, we can choose any node as the root. The result gr ...

  6. [LeetCode] 310. Minimum Height Trees 最小高度树

    For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ...

  7. 最小高度的树 Minimum Height Trees

    2018-09-24 12:01:38 问题描述: 问题求解: 毫无疑问的一条非常好的题目,采用的解法是逆向的BFS,也就是从叶子节点开始遍历,逐步向中心靠拢,最终留下的叶子节点就是答案. publi ...

  8. 九度oj 题目1536:树的最小高度

    题目描述: 给定一棵无向树, 我们选择不同的节点作为根节点时,可以得到不同的高度(即树根节点到叶子节点距离的最大值), 现在求这棵树可能的最低高度. 输入: 输入可能包含多个测试案例. 对于每个测试案 ...

  9. IE6 中的最大最小寬度和高度 css 高度 控制(兼容版本)

    /* 最小寬度 */.min_width{min-width:300px; /* sets max-width for IE */ _width:expression(document.body.cl ...

随机推荐

  1. Linux日志分析和管理

    目录 日志的作用.分类.管理.轮转和级别 rsyslog服务 Journal守护进程 /var/log下相关的日志文件 日志服务器的建立 日志的作用.分类.管理.轮转和级别 日志的作用: 用于记录系统 ...

  2. 工具tip

    1 postman: chrome的插件,模拟http的get.post等各种请求 2 010: 二进制文件查看,支持很多文件格式和强大的脚本:010 Editor体验 3 BeyondCompare ...

  3. dispatcherServlet-servlet.xml(SSM maven 项目)

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  4. CCNA 第三章 TCP/IP简介

    1:DoD模型和OSI模型 2:TCP和UDP的重要特性 3:IP编址: (1):A类地址: 第一字节第一位必须为0,即:0xxxxxxx,取值范围:00000000-011111111:0-127, ...

  5. SparkSQL电商用户画像(二)之如何构建画像

    四. 如何构建电商用户画像 4.1 构建电商用户画像技术和流程 构建一个用户画像,包括数据源端数据收集.数据预处理.行为建模.构建用户画像 有些标签是可以直接获取到的,有些标签需要通过数据挖掘分析到! ...

  6. Pulsar部署和实践(一)

    前言 本地Docker部署Pulsar消息代理实现消息发布和消息订阅 介绍 相关概念,后面有时间再花时间整理下. 实践步骤 1.使用dokcer本地部署pulsar docker run -it \ ...

  7. springboot+Thymeleaf+layui 实现分页

    layui分页插件 引入相关的js和css layui:css <link rel="stylesheet" th:href="@{layui/css/layui. ...

  8. Envoy:开启访问日志,access_log

    access_log: - name: envoy.listener.accesslog typed_config: "@type": type.googleapis.com/en ...

  9. [刷题] 1016 部分A+B (15分)

    思路 以字符串形式接收 遍历字符串,组装数据,输出结果 #include <iostream> using namespace std; int main() { string a, b; ...

  10. [bug] Python:“TabError: inconsistent use of tabs and spaces in indentation”

    原因 代码中混用了Tab和4个空格 参考 https://blog.csdn.net/dongdong9223/article/details/82745068