数据结构与算法
数据结构与算法
鱼儿爱丫头
博学慎思,参天尽物。
展开
-
数据结构与算法之根据后序遍历数组重建二叉搜索树
题:根据后序遍历数组重建二叉搜索树思路:根据二叉树特性,它的后序遍历的方式是先左节点然后右节点,然后再根节点,所以,这个树的根节点一定是数组的最后一个数,同时根据二叉搜索树的特性,小于根节点的树一定是在左树上,大于根节点的树一定是在右树上,所以可以通过遍历的方式,找到每个父节点的下级节点的数组范围,而遍历的过程可以通过二分查找来代替层级循环,时间复杂度为O(nlogn)代码:public static TreeNode buildProcess(int[] data, int l, int r){原创 2021-11-01 22:11:41 · 424 阅读 · 0 评论 -
数据结构与算法之二叉树
public class BinaryTree { public static void main(String[] args) { int[] dataList = {5,4,3,2,1,6,7,8,9,10}; Node node = new Node(dataList[0]); for (int i = 1; i < dataList.length; i++) { createNode(node,dataList原创 2021-11-01 20:37:09 · 84 阅读 · 0 评论 -
数据结构与算法之超级水王问题
问题描述一个数组中,如果存在一个数,这个数出现的个数大于数组长度的一半,那么这个数就是水王数。常规解法遍历数组,用HashMap存储每个数出现的个数,然后找出符合条件的数据。时间复杂度为O(n),空间复杂度为O(n)。如果空间复杂度为O(1)的时候,常规解法则不适用。高级解法如果一个数是水王数,那么遍历数组的过程中依次删除掉,那么水王数一定会剩余下来,[1,2,2,2,1],反之,被剩下的不一定是水王数,如[1,2,3,4,5]。/** * 超级水王问题 * @desc 一个数组中,如果存在原创 2021-10-17 22:20:51 · 244 阅读 · 0 评论