最小高度树Java版本(力扣)

最小高度树

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

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

<span style="color:#000000"><code>      0 
     / \ 
   -3   9 
   /   / 
 -10  5 
</code></span>
  • 1
  • 2
  • 3
  • 4
  • 5

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

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

正确代码:

<span style="color:#000000"><code class="language-java"><span style="color:#c678dd">class</span> Solution <span style="color:#999999">{</span>
    <span style="color:#c678dd">public</span> TreeNode <span style="color:#61aeee">sortedArrayToBST</span><span style="color:#999999">(</span><span style="color:#c678dd">int</span><span style="color:#999999">[</span><span style="color:#999999">]</span> nums<span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">if</span><span style="color:#999999">(</span>nums<span style="color:#999999">.</span>length<span style="color:#669900">==</span><span style="color:#98c379">0</span><span style="color:#999999">)</span>
        <span style="color:#c678dd">return</span> null<span style="color:#999999">;</span>
        TreeNode node <span style="color:#669900">=</span> <span style="color:#c678dd">new</span> TreeNode<span style="color:#999999">(</span>nums<span style="color:#999999">[</span>nums<span style="color:#999999">.</span>length<span style="color:#669900">/</span><span style="color:#98c379">2</span><span style="color:#999999">]</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        node<span style="color:#999999">.</span>left <span style="color:#669900">=</span> <span style="color:#61aeee">sortedArrayToBST</span><span style="color:#999999">(</span>Arrays<span style="color:#999999">.</span><span style="color:#61aeee">copyOfRange</span><span style="color:#999999">(</span>nums<span style="color:#999999">,</span><span style="color:#98c379">0</span><span style="color:#999999">,</span>nums<span style="color:#999999">.</span>length<span style="color:#669900">/</span><span style="color:#98c379">2</span><span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        node<span style="color:#999999">.</span>right <span style="color:#669900">=</span> <span style="color:#61aeee">sortedArrayToBST</span><span style="color:#999999">(</span>Arrays<span style="color:#999999">.</span><span style="color:#61aeee">copyOfRange</span><span style="color:#999999">(</span>nums<span style="color:#999999">,</span>nums<span style="color:#999999">.</span>length<span style="color:#669900">/</span><span style="color:#98c379">2</span><span style="color:#669900">+</span><span style="color:#98c379">1</span><span style="color:#999999">,</span>nums<span style="color:#999999">.</span>length<span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        <span style="color:#c678dd">return</span> node<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
<span style="color:#999999">}</span>
</code></span>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

<span style="color:#000000"><code class="language-java"><span style="color:#c678dd">package</span> com<span style="color:#999999">.</span>Keafmd<span style="color:#999999">.</span>day0102<span style="color:#999999">;</span>

<span style="color:#c678dd">import</span> java<span style="color:#999999">.</span>util<span style="color:#999999">.</span>Arrays<span style="color:#999999">;</span>

<span style="color:#5c6370">/**
 * Keafmd
 *
 * @ClassName: MinimumHeightTree
 * @Description: 最小高度树
 * @author: 牛哄哄的柯南
 * @date: 2021-01-02 19:29
 */</span>
<span style="color:#c678dd">public</span> <span style="color:#c678dd">class</span> MinimumHeightTree <span style="color:#999999">{</span>
    <span style="color:#c678dd">public</span> <span style="color:#c678dd">static</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">main</span><span style="color:#999999">(</span>String<span style="color:#999999">[</span><span style="color:#999999">]</span> args<span style="color:#999999">)</span> <span style="color:#999999">{</span>

        Solution01022 solution01022 <span style="color:#669900">=</span> <span style="color:#c678dd">new</span> Solution01022<span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        <span style="color:#c678dd">int</span> <span style="color:#999999">[</span><span style="color:#999999">]</span>nums<span style="color:#669900">=</span><span style="color:#999999">{</span><span style="color:#669900">-</span><span style="color:#98c379">10</span><span style="color:#999999">,</span><span style="color:#669900">-</span><span style="color:#98c379">3</span><span style="color:#999999">,</span><span style="color:#98c379">0</span><span style="color:#999999">,</span><span style="color:#98c379">5</span><span style="color:#999999">,</span><span style="color:#98c379">9</span><span style="color:#999999">}</span><span style="color:#999999">;</span>
        TreeNode result <span style="color:#669900">=</span> solution01022<span style="color:#999999">.</span><span style="color:#61aeee">sortedArrayToBST</span><span style="color:#999999">(</span>nums<span style="color:#999999">)</span><span style="color:#999999">;</span>
        System<span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#61aeee">println</span><span style="color:#999999">(</span>result<span style="color:#999999">.</span>val<span style="color:#999999">)</span><span style="color:#999999">;</span>
        System<span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#61aeee">println</span><span style="color:#999999">(</span>result<span style="color:#999999">.</span>left<span style="color:#999999">.</span>val<span style="color:#999999">)</span><span style="color:#999999">;</span>
        System<span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#61aeee">println</span><span style="color:#999999">(</span>result<span style="color:#999999">.</span>right<span style="color:#999999">.</span>val<span style="color:#999999">)</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
<span style="color:#999999">}</span>
<span style="color:#c678dd">class</span> TreeNode <span style="color:#999999">{</span>
      <span style="color:#c678dd">int</span> val<span style="color:#999999">;</span>
      TreeNode left<span style="color:#999999">;</span>
      TreeNode right<span style="color:#999999">;</span>
      <span style="color:#61aeee">TreeNode</span><span style="color:#999999">(</span><span style="color:#c678dd">int</span> x<span style="color:#999999">)</span> <span style="color:#999999">{</span> val <span style="color:#669900">=</span> x<span style="color:#999999">;</span> <span style="color:#999999">}</span>
<span style="color:#999999">}</span>
<span style="color:#c678dd">class</span> Solution01022 <span style="color:#999999">{</span>
    <span style="color:#c678dd">public</span> TreeNode <span style="color:#61aeee">sortedArrayToBST</span><span style="color:#999999">(</span><span style="color:#c678dd">int</span><span style="color:#999999">[</span><span style="color:#999999">]</span> nums<span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">if</span><span style="color:#999999">(</span>nums<span style="color:#999999">.</span>length<span style="color:#669900">==</span><span style="color:#98c379">0</span><span style="color:#999999">)</span>
        <span style="color:#c678dd">return</span> null<span style="color:#999999">;</span>
        TreeNode node <span style="color:#669900">=</span> <span style="color:#c678dd">new</span> TreeNode<span style="color:#999999">(</span>nums<span style="color:#999999">[</span>nums<span style="color:#999999">.</span>length<span style="color:#669900">/</span><span style="color:#98c379">2</span><span style="color:#999999">]</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        node<span style="color:#999999">.</span>left <span style="color:#669900">=</span> <span style="color:#61aeee">sortedArrayToBST</span><span style="color:#999999">(</span>Arrays<span style="color:#999999">.</span><span style="color:#61aeee">copyOfRange</span><span style="color:#999999">(</span>nums<span style="color:#999999">,</span><span style="color:#98c379">0</span><span style="color:#999999">,</span>nums<span style="color:#999999">.</span>length<span style="color:#669900">/</span><span style="color:#98c379">2</span><span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        node<span style="color:#999999">.</span>right <span style="color:#669900">=</span> <span style="color:#61aeee">sortedArrayToBST</span><span style="color:#999999">(</span>Arrays<span style="color:#999999">.</span><span style="color:#61aeee">copyOfRange</span><span style="color:#999999">(</span>nums<span style="color:#999999">,</span>nums<span style="color:#999999">.</span>length<span style="color:#669900">/</span><span style="color:#98c379">2</span><span style="color:#669900">+</span><span style="color:#98c379">1</span><span style="color:#999999">,</span>nums<span style="color:#999999">.</span>length<span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        <span style="color:#c678dd">return</span> node<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
<span style="color:#999999">}</span>

</code></span>
  • 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

输出结果:

<span style="color:#000000"><code class="language-java"><span style="color:#98c379">0</span>
<span style="color:#669900">-</span><span style="color:#98c379">3</span>
<span style="color:#98c379">9</span>

Process finished with exit code <span style="color:#98c379">0</span>
</code></span>
  • 1
  • 2
  • 3
  • 4
  • 5

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

在这里插入图片描述
加油!

共同努力!

Keafmd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值