[LeetCode]Convert Sorted Array to Binary Search Tree, 解题报告
来源:互联网 发布:库存记录软件 编辑:程序博客网 时间:2024/05/17 00:18
前言
最近一直在学习java SE,也将ACM的平台从九度OJ迁移到了LeetCode OJ,今天是11月的最后一天,在LeetCode OJ上ac了21道题,今天也发一个解题报告
思路
首先,需要明确平衡二叉树的定义,参考:平衡二叉树
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。构造与调整方法:平衡二叉树的常用算法有红黑树、AVL、Treap、伸展树等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,1是根节点、F(n-1)是左子树的节点数量、F(n-2)是右子数的节点数量
其次,就是利用二分的思想递归的构造平衡二叉树
(1)找到中点作为根节点 (2)再递归的构建左右子树
AC代码
import java.util.*;public class ConvertSortArrayToBST { static class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int x) { this.val = x; } } public static TreeNode createBST(int[] num, int bt, int ed) { TreeNode root = null; if (bt <= ed) { int mid = bt + (ed - bt) / 2; root = new TreeNode(num[mid]); root.left = createBST(num, bt, mid - 1); root.right = createBST(num, mid + 1, ed); } return root; } public static TreeNode sortedArrayToBST(int[] num) { if (num.length == 0) return null; TreeNode root = createBST(num, 0, num.length - 1); return root; } public static void preOrderTraverse(TreeNode root) { if (root != null) { System.out.printf("%d ", root.val); preOrderTraverse(root.left); preOrderTraverse(root.right); } } public static void main(String[] args) { int i, n, num[]; Scanner cin = new Scanner(System.in); while (cin.hasNext()) { n = cin.nextInt(); num = new int[n]; for (i = 0; i < n; i++) { num[i] = cin.nextInt(); } Arrays.sort(num); TreeNode root = sortedArrayToBST(num); preOrderTraverse(root); System.out.println(); } cin.close(); }}
- [LeetCode]Convert Sorted Array to Binary Search Tree, 解题报告
- 【LeetCode】Convert Sorted Array to Binary Search Tree 解题报告
- LeetCode Convert Sorted List to Binary Search Tree 解题报告
- 【LeetCode】Convert Sorted List to Binary Search Tree 解题报告
- LeetCode(108) Convert Sorted Array to Binary Search Tree解题报告
- [leetcode] 108. Convert Sorted Array to Binary Search Tree 解题报告
- Leetcode 108. Convert Sorted Array to Binary Search Tree 有序数组转化BST 解题报告
- LeetCode 108. Convert Sorted Array to Binary Search Tree 解题报告
- LeetCode解题报告 108. Convert Sorted Array to Binary Search Tree [medium]
- [Leetcode] 108. Convert Sorted Array to Binary Search Tree 解题报告
- [leetcode]108. Convert Sorted Array to Binary Search Tree@Java解题报告
- 【LeetCode】Convert Sorted Array to Binary Search Tree && Convert Sorted List to Binary Search Tree
- 【LeetCode】convert-sorted-link-to-binary-search-tree & convert-sorted-array-to-binary-search-tree
- Convert Sorted List to Binary Search Tree解题报告
- Leetcode - Tree - Convert Sorted Array to Binary Search Tree
- *(leetcode) Convert Sorted Array to Binary Search Tree (tree)
- LeetCode[Tree]: Convert Sorted Array to Binary Search Tree
- [leetcode] 109. Convert Sorted List to Binary Search Tree 解题报告
- 电感啸叫
- [CentOS]CentOS_6.3_修改用户的最大进程数_fd
- 毕业半年,才发现自己要走的路还要好远,嵌入式,从今天开始,一点一滴。
- 第一次
- 简单算法--求一个数n的二进制形式的第i位
- [LeetCode]Convert Sorted Array to Binary Search Tree, 解题报告
- 数据结构与算法(C#)--线性表
- Oracle 建表常用数据类型详解
- 将win7电脑无线网变身WiFi热点,让手机、笔记本共享上网
- ZooKeeper安装过程
- 软件开发模式之敏捷开发介绍
- JavaJsonUtil公用类
- 数组大折腾
- storm 原理简介及单机版安装指南