树
.Passion
欢迎来看我的博客 ,原博客地址: https://www.cnblogs.com/lyr-2000/
现决定重新启用博客园的博客,一部分比较浅的笔记将写到这个博客上
欢迎打扰,另外,个人博客网站也搭建成功,欢迎打扰:
https://lyr-2000.github.io/
展开
-
字典树
class Trie { private Node root; static class Node{ Node[] childs; boolean isEnd; public Node(){ childs = new Node[26];//默认为 null } } ...原创 2019-12-21 00:18:55 · 115 阅读 · 0 评论 -
leetCode 450.删除二叉搜索树的最小节点
class Solution { public TreeNode deleteNode(TreeNode root, int key) { if(root==null)return root; if(root.val<key) { root.right=deleteNode(root.right,key); ...原创 2019-12-17 17:03:57 · 175 阅读 · 0 评论 -
二叉树的前驱节点和后继节点
前驱节点 (predecessor)中序遍历时的前一个节点如果 是二叉搜索树(bst),前驱节点就是前一个比它小的节点后继节点(successor)后继节点是中序遍历时的下一个节点如果是二叉搜索树,后继节点就是后一个比它大的节点如图,7的前驱节点是6,后继节点8编码实现:private static class Node<E> { E element; Node...原创 2019-12-17 14:58:19 · 3130 阅读 · 0 评论 -
108.将有序数组转为二叉搜索树
108.将有序数组转为二叉搜索树这个题很好的考察了中序遍历的性质答案不唯一,但是答案要求左右子树的高度差不超过1,那么,我们可以用中间的数作为根节点,因为二叉搜索树的中序遍历一定是一个升序数组class Solution { public TreeNode sortedArrayToBST(int[] nums) { if(nums==null) return nu...原创 2019-10-31 09:50:08 · 79 阅读 · 1 评论 -
反序列化二叉树
import java.util.*;public class Main{ public static void main(String[] args) { work2(); } //前序遍历 public static void work1() { Stack<TreeNode> stack = ne...原创 2019-10-22 01:52:13 · 81 阅读 · 0 评论 -
二叉树遍历详解
递归的3种方式遍历一棵树和遍历一颗顺序存储的二叉树数组结果是一样的,因此,这里使用顺序存储的二叉树数组来写这个代码同理下面介绍一下非递归的遍历方法先看先序遍历的代码:public static void preOrder() { int[] arr = {1,2,3,4,5,6,7}; Stack<Integer> stack ...原创 2019-10-03 12:30:09 · 148 阅读 · 0 评论 -
优先队列入队操作
效果展示:这里我们从数组的一号位置开始存储那么在二叉树中的规律是parent(i) = i/2;leftChild of (i) = 2i;rightChild of (i) = 2i+1;如上图所示,我们发现,连线的间隔越是往后,距离就越大,而且正好是2的倍数,间隔呈现2,4,8那样增长由于 parent(i) = i/2 ,如上图所示, 15位置是 10 ,那么他的父亲节点位...原创 2019-08-31 15:19:08 · 906 阅读 · 1 评论 -
优先队列的出队操作
要点:了解 shiftDown了解优先队列 出队的机制上一篇文章中我写了优先队列的入队操作,入队shiftUp,出队shiftDown看代码效果:首先,在优先队列插入50个元素,执行poll操作,也就是出队把队顶的一个元素拿出如图,2个97只剩下一个对于一个50个元素的大根堆,只要出队,就变成49个元素,这里我使用 count–,因此数组长度并不是真的变成了49个,而是模拟...原创 2019-08-31 16:00:05 · 1384 阅读 · 0 评论 -
堆排序
该文章代码配合我的上一篇文章:优先队列的出队操作优先队列的入队操作堆排序第一版本 public static void main(String[] args) { int[] arr={ 1,3,7,5,4,-1,999,58,5,8,2 }; HeapSort(arr); for (int...原创 2019-08-31 17:41:01 · 134 阅读 · 0 评论 -
原地堆排序
大家可以看一下我上一篇文章使用的堆排序堆排序我之前使用的堆排序是要开 一个长度为 N的数组,事实上,我们可以把原数组看成一个堆,也就是说我们不用开一个数组,而是在原地排序怎么说呢…还是给我一个数组,我对这个数组进行Heapify 操作,这样就得到了一个大根堆(脑袋是最大的) ,然后我们把 最大的那个数 和数组的最后一个元素交换,这样一来,数组末尾最大那个数就不用考虑了至此,堆排序的一个...原创 2019-08-31 20:15:03 · 186 阅读 · 0 评论 -
刷题找工作(二叉树)
刷题找工作第1篇输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。还原二叉树看解题代码public class Solution { public TreeNode reConstructBinar...原创 2019-09-02 22:42:21 · 140 阅读 · 0 评论 -
leetCode113题,路径和
leetCode113题,路径和使用 回溯算法:思路:使用dfs,递归进入当前节点,记录节点的值,如果层数达到了,就查看记录是否和目标值相等,如果相等,就把 局部链表 l 深拷贝就 g链表里面,这时,返回上一层是记得要把 l链表记录的当前节点抹除掉,这要就成功回溯到了上一层/** * Definition for a binary tree node. * public class Tr...原创 2019-08-26 23:21:08 · 137 阅读 · 0 评论