本文正在参加「Java主题月 - Java 刷题打卡」,详情查看<活动链接>
【Java 刷题打卡】 刷题比玩游戏好多了,成就感越来越强,每天坚持刷几道题,每天锻炼30分钟,等8块腹肌,等大厂offer.
😄
那就干吧! 这个专栏都是刷的题目都是关于二叉树的,我会由浅入深、循序渐进,刷题就是这样需要连续不断的记忆--艾宾浩斯记忆法2121112。二叉树的内容不多,但是都是每个程序员必备的,对了解红黑树、B+树、LSM树都非常有帮助等等
WAL+LSM-tree实现的leveldb和rocksdb
B+ 树的mysql
(HBASE) - LSM-tree的架构把random write转成sequential write,多层的compaction和lookup,存在写放大和读放大
TokuDB索引结构--Fractal Tree
还有更多,值得咱们发掘。
- 二叉树之中序遍历-迭代、递归
- 二叉树之前序遍历-迭代、递归
- 二叉树之后序遍历-迭代、递归
- 二叉树的层序遍历-迭代、递归
- 二叉树的最大深度-迭代、递归
- 二叉树之对称二叉树-迭代、递归
- 二叉树之路径总和-迭代、递归
- 从中序与后序遍历序列构造二叉树-迭代、递归
- 二叉树的序列化与反序列化-迭代、递归
- 验证二叉搜索树-迭代、递归
- 二叉搜索树中的搜索-迭代、递归
- 二叉搜索树中的插入操作-迭代、递归
- 删除二叉搜索树中的节点-迭代、递归
- 二叉搜索树的范围和-迭代、递归
leecode 面试题 04.02. 最小高度树
给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。
示例: 给定有序数组: [-10,-3,0,5,9],
一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:
0
/ \
-3 9
/ /
-10 5
二叉搜索树具有以下性质:每个节点中的值必须大于(或等于)其左侧子树中的任何值,但小于(或等于)其右侧子树中的任何值。
题解:对半分,左边为左子树(递归),右边为右子树,
参考代码
定义一颗树
class TreeNode {
int val; // 头结点
TreeNode left; // 左子树
TreeNode right; // 右子树
TreeNode(int x) {
val = x;
}
}
// 测试方法
public static void main(String[] args) {
TreeNode treeNode = new TreeNode(1);
treeNode.left = new TreeNode(2);
treeNode.right = new TreeNode(3);
System.out.println("xxxx结果 = " + preorderTraversal(treeNode));
}
JAVA 递归
public TreeNode sortedArrayToBST(int[] nums) {
return helper(nums, 0, nums.length - 1);
}
public TreeNode helper(int[] nums, int low, int high) {
if (low > high) { // low > high表示子数组为空
return null;
}
// 以mid作为根节点
int mid = (high - low) / 2 + low;
TreeNode root = new TreeNode(nums[mid]);
// 左子数组[low, mid -1]构建左子树
root.left = helper(nums, low, mid - 1);
// 右子数组[mid + 1, high]构建右子树
root.right = helper(nums,mid + 1, high);
return root;
}
真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话
求点赞👍 求关注❤️ 求分享👥 对8块腹肌的我来说真的 非常有用!!!
如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️