码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 108. Convert Sorted Array to Binary Search Tree

时间:2018-11-04 12:36:32      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:col   分析   etc   .com   bsp   evel   following   java   https   

分析

难度 易

来源

https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/

题目

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

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

Example:

Given the sorted array: [-10,-3,0,5,9], 
One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST: 
      0
     / \
   -3   9
   /   /
 -10  5
解答
 1 package LeetCode;
 2 
 3 import java.util.LinkedList;
 4 import java.util.Queue;
 5 
 6 public class L108_ConvertSortedArray2BinarySearchTree {
 7     public TreeNode makeBinaryTreeByArray(int[] nums,int low,int high){
 8         if(low<=high){
 9             int mid=(high+low)/2;
10             TreeNode root=new TreeNode(nums[mid]);
11             //System.out.println(root.val);
12             root.left=makeBinaryTreeByArray(nums,low,mid-1);
13             root.right=makeBinaryTreeByArray(nums,mid+1,high);
14             return root;
15         }
16         else
17             return null;
18     }
19     public TreeNode sortedArrayToBST(int[] nums) {
20         return makeBinaryTreeByArray(nums,0,nums.length-1);
21     }
22     public void levelOrderTraversal(TreeNode root){//广度优先搜索+分层
23         if(root==null){
24             //System.out.println("empty tree");
25             return;
26         }
27         Queue<TreeNode> queue=new LinkedList<TreeNode>();
28         queue.add(root);
29         int curCount=1;//记录当前层节点数
30         int nextCount=0;//记录下一层节点数
31         int outCount=0;//记录出队列节点数
32         while(!queue.isEmpty()){
33             TreeNode node=queue.remove();
34             outCount++;
35             System.out.print(node.val+"\t");
36             if(node.left!=null){
37                 queue.add(node.left);
38                 nextCount++;
39             }
40             if(node.right!=null){
41                 queue.add(node.right);
42                 nextCount++;
43             }
44             if(outCount==curCount)//当前层全部出队列
45             {
46                 System.out.println();
47                 curCount=nextCount;
48                 outCount=0;
49             }
50         }
51         System.out.println("");
52     }
53     public static void main(String[] args){
54         int[] nums={-10,-3,0,5,9};
55         L108_ConvertSortedArray2BinarySearchTree l108=new L108_ConvertSortedArray2BinarySearchTree();
56         TreeNode root=l108.sortedArrayToBST(nums);
57         l108.levelOrderTraversal(root);
58     }
59 }

 

 

LeetCode 108. Convert Sorted Array to Binary Search Tree

标签:col   分析   etc   .com   bsp   evel   following   java   https   

原文地址:https://www.cnblogs.com/flowingfog/p/9903233.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!