[LeetCode]Convert Sorted Array to Binary Search Tree, 解题报告
2013-11-30 14:01
387 查看
前言
最近一直在学习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 ; 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 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 [medium]
- [leetcode] 108. Convert Sorted Array to Binary Search Tree 解题报告
- 【LeetCode】108.Convert Sorted Array to Binary Search Tree(Easy)解题报告
- LeetCode Convert Sorted List to Binary Search Tree 解题报告
- LeetCode解题报告——Convert Sorted List to Binary Search Tree & Populating Next Right Pointers in Each Node & Word Ladder
- arrayfunction[LeetCode]Convert Sorted Array to Binary Search Tree
- Convert Sorted Array to Binary Search Tree || LeetCode
- 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] Convert Sorted Array to Binary Search Tree
- [LeetCode]Convert Sorted Array to Binary Search Tree
- [leetcode] Convert Sorted Array to Binary Search Tree
- [Leetcode] Convert Sorted Array to Binary Search Tree