Golang实现二叉搜索树(BST)及其相关操作
介绍二叉查找树(英语:Binary Search Tree),也称为二叉查找树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二叉查...
介绍二叉查找树(英语:Binary Search Tree),也称为二叉查找树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二叉查...
介绍层序遍历,顾名思义,不难理解,就是一层一层地遍历Golang实现此处分为递归实现(DFS,深度优先算法)和迭代实现(BFS,广度优先算法)本文以Leetcode102题为例:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/递归实现(DFS)递归实现需要储存每层的级数实现起来主要分为以下几个步骤递归跳出条...
介绍前序遍历前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树。上图的树的前序遍历顺序:1->2->4->5->7->8->3->6->9中序遍历中序遍历是先遍历左子树,然后访问根节点,然后遍历右子树。上图的树的前序遍历顺序:4->2->7->5->8->3->9->6后序遍历后序遍历是先遍历左子树...
众所周知,斐波那契数是很多动态规划的教程里面的第一个案例,既简单,简单到即使在不会动态规划的情况下,也可以用动态规划的方法把他做了出来,又经典,小小一个题目包含了动态规划的思想,确实不错。因此,尽管斐波那契数比较简单,我依然选择记录一下,算是作为动态规划的第一个笔记吧。当然,本文仅仅算是我个人的理解,跟大佬们讲的有些许甚至很大的出入,仅供参考。什么是动态规划动态规划(英语:Dynamic p...
队列介绍队列这玩意,貌似也没什么,就是一个先进先出FIFO(First Input First Output)的数据结构,主要分为顺序队列和循环队列。顺序队列顺序队列在入队过程中直接在队尾插入即可,时间复杂度为O(1),而在每次出队过程都需要将所有元素向前移位,此时时间复杂度为O(n),效率低下。循环队列循环队列则在出队过程中不需要移动元素,而是引入两个指针front和rear分别指向队头和...