- 博客(7)
- 收藏
- 关注
原创 二叉树的Morris遍历
一种非常炫酷的遍历二叉树的方法,时间复杂度为O(N),但空间复杂度只有O(1),通过使用原树中大量的空闲指针来达到节省空间的目的,如果该节点有左树那么会路过该节点两次,没有左树则只会路过一次,可以用左树上的最右节点来判断我是第几次路过的这个节点,在实际问题中,是只需要整合两次根节点的题目的最优解,像判断二叉树中两点间最大距离的这种问题需要整合三次根节点的题目最优解则是递归求解。
2025-03-30 15:56:28
432
原创 递归枚举子集:深入理解与实现
递归枚举子集是理解回溯算法的基础,其核心在于**选择与撤销选择的对称性**。虽然时间复杂度较高,但在小规模数据或组合问题中仍非常实用。掌握后,可进一步学习剪枝优化(如分支限界)或迭代法(如位运算枚举)。
2025-03-24 20:39:02
437
原创 字符串相乘
给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。不能使用任何内置的 BigInteger 库或直接将输入转换为整数。
2025-03-22 20:18:42
309
原创 二叉树的排序算法(先序遍历,中序遍历,后序遍历,宽度优先遍历)
在计算机科学中,二叉树是一种基础而强大的数据结构,它广泛应用于各种算法和问题的解决方案中。作为一种树形结构,二叉树在组织和管理数据方面展示了其独特的优势。本文将深入探讨二叉树的基本概念、主要类型以及常见的算法,旨在帮助读者全面理解如何利用二叉树优化程序性能和解决实际问题。无论你是算法新手还是经验丰富的开发者,希望这篇博客能为你提供清晰的思路和实用的技巧。
2024-09-18 19:09:42
586
原创 常见排序算法——冒泡排序,快排,归并
冒泡排序顾名思义就是像水中的泡泡一样,离水面越近,泡泡就会越大。在数组中的体现就是从数组的一号索引开始逐渐像后比较,遇到比当前值大的数就进行交换,利用两层循环实现全数组的有序。代码分为三部分:1.外层循环,每一次循环保证最大的数排在他对应的位置,因为最后一个数不用排所以次数-12.内层循环,对已经排好序的数之外的数进行排序,两个相邻数互换位置,直到排好当前最大数的位置为止3.交换算法,使用位运算的方式交换位置可以提高效率。
2024-09-11 20:43:56
738
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅