随笔分类 -  数据结构与算法 /

摘要:在前面的文章中总结了二叉树的一些操作,提供了二叉树前中后的递归和非递归的实现。在非递归的实现中,基本思想是利用栈来模拟递归调用遍历的过程,本质上和递归实现没有区别,空间复杂度为O(n)。是否存在一种算法,它不使用栈也不破坏二叉树结构,但是可以完成对二叉树的遍历?即: 空间复杂度为\(O(1) 阅读全文
posted @ 2023-11-07 14:42 mingshan 阅读(54) 评论(0) 推荐(0) 编辑
摘要:LeetCode有两道合并数据相关的题,分别是: 21.合并两个有序链表 88.合并两个有序数组 617.合并二叉树 这些题数据结构不同,但是算法的目标大致一致,即将给定的两个相同的数据结构,合并为一个数据结构。其中会用到递归等思想,下面先从最简单的合并两个有序数组开始分析吧。 88.合并两个有序数 阅读全文
posted @ 2023-11-06 08:43 mingshan 阅读(12) 评论(0) 推荐(0) 编辑
摘要:二叉树定义 二叉树(Binary Tree)是n(n >= 0)个结点所构成的集合,它或为空树(n=0);或为非空树,对于非空树T: 有且仅有一个称之为根的结点 除根节点以外的其余结点分为两个互不相交的子集T1T2,分别称为T的左子树和右子树,且T1T2本身又是二 阅读全文
posted @ 2023-10-30 15:07 mingshan 阅读(17) 评论(0) 推荐(0) 编辑
摘要:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树),它具有以下特点: 若任一节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任一节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意节点的左、右子树也分别为二叉查找树; 没有键值相等的节 阅读全文
posted @ 2023-10-30 15:07 mingshan 阅读(17) 评论(0) 推荐(0) 编辑
摘要:第一个看到树状数组(Binary Indexed Tree)这个数据结构时,真的被吸引了,设计真是简洁,属于理论很复杂,但实现不复杂的那种算法。该算法多用于高效计算数列的前缀和, 区间和动态单点值的修改。要理解树状数组的工作原理,必须要知道二进制的运算法则,比如 &、 -、补码和反码等。下面先介绍下 阅读全文
posted @ 2023-10-30 15:06 mingshan 阅读(87) 评论(0) 推荐(0) 编辑
摘要:在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是 O(logn)。所以我们可知,AVL树首先是二叉查找树(BST),不了解BST的同学可以了解一下,因为AVL 阅读全文
posted @ 2023-10-30 15:03 mingshan 阅读(9) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示