首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

手把手刷二叉搜索树(第一期)

二叉搜索树并不算复杂,但我觉得它构建起了数据结构领域的半壁江山,直接基于 BST 的数据结构有 AVL 树,红黑树等等,拥有了自平衡性质,可以提供 logN 级别的增删查改效率;还有 B+ 树,线段树等结构都是基于...如果按照我们刚才说的方法,利用「BST 中序遍历就是升序排序结果」这个性质,每次寻找第k小的元素都要中序遍历一次,最坏的时间复杂度是O(N),N是 BST 的节点个数。...所以说,计算第k小元素,最好的算法肯定也是对数级别的复杂度,不过这个依赖于 BST 节点记录的信息有多少。 我们想一下 BST 的操作为什么这么高效?...很简单,只要把递归顺序改一下就行了: void traverse(TreeNode root) { if (root == null) return; // 先递归遍历右子树 traverse...转化成累加树 root.val = sum; traverse(root.left); } 这道题就解决了,核心还是 BST 的中序遍历特性,只不过我们修改了递归顺序,降序遍历 BST

43420

【数据结构】顺序查找树节点计算思路与遍历详解

顺序存储二叉树的概念 顺序存储二叉树的特点: 顺序存储二叉树遍历 代码实现 顺序存储二叉树 顺序存储二叉树的概念 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组..., 上图的二叉树的结点,要求以数组的方式来存放 arr : [1, 2, 3, 4, 5, 6, 6] 2) 要求在遍历数组 arr 时,仍然可以以前序遍历,中序遍历和后序遍历的方式完成结点的遍历 顺序存储二叉树的特点...n : 表示二叉树中的第几个元素 顺序存储二叉树遍历 需求 给你一个数组 {1,2,3,4,5,6,7},要求以二叉树前序遍历的方式进行遍历。...private int[] arr; public ArrayTree(int[] arr) { this.arr = arr; } // 顺序存储树的前序遍历...System.out.println(arr[index]); } } 这里我们先了解顺序存储二叉树,并且掌握他的节点计算思路和遍历思路,小冷之后的文章堆排序的时候会进行知识点的使用

25110
领券