算法
文章平均质量分 72
shangyj17
这个作者很懒,什么都没留下…
展开
-
算法-二叉树-前序、中序、后序遍历图解+python3实现
0.简介本文主要内容有:介绍二叉树概念 使用图解,简单直观地阐述了二叉树前序、中序、后序遍历的方法 使用python3 编程实现二叉树,并进行了前序、中序、后序遍历。 1.二叉树概念(来源于百度百科)二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。...原创 2018-09-11 21:13:59 · 7283 阅读 · 1 评论 -
算法-手动推演八皇后问题-python3递归实现
0.摘要本文介绍八皇后问题的解决思路,并使用python3实现。 1.问题阐述目标: 8×8 的国际象棋棋盘上放置八个皇后规则:任两个皇后都不能处于同一条横行、纵行或斜线上显然可知:由于任意皇后不能同行,所以每一行最多放置一位皇后; 由于行数=皇后数,所以每一行至少放置一位皇后故:正确的放置方式,一定是每行有且只有一位皇后(1)为了方便读者了解规则,我们先以4皇...原创 2018-09-22 19:04:04 · 3520 阅读 · 1 评论 -
算法-广度优先、深度优先和等代价搜索
0.摘要本文主要介绍三种盲目搜索算法:广度优先、深度优先和等代价搜索。首先,介绍几个之后会用到的概念:OPEN表:存放未扩展节点的表格CLOSE表:存放以扩展节点的表格 1.宽度优先搜索宽度优先搜索(BFS,Breadth First Search。 )又称广度优先搜索,是最简便的图的搜索算法之一。定义:如果搜索是以接近初始节点的程度一次扩展节点的,那么这种搜索就叫...原创 2018-10-05 17:53:40 · 18633 阅读 · 2 评论 -
算法-图解汉诺塔原理-python3实现-可输出圆盘编号
0.摘要本文使用python3实现汉诺塔问题。 1.问题阐述与分析有三个柱子A,B,C,每个柱子上都可以放置圆盘。最初,所有圆盘都在A柱子上,需要把所有圆盘都移动到C柱子上。要求:1.每次只移动一个圆盘2.只能移动柱子最上面的圆盘3.保证每根柱子上,上面的圆盘一定比下面的圆盘小 经过分析,我们发现,这样的问题可以分解为下面三个子步骤step1:如果...原创 2018-09-24 20:37:57 · 2677 阅读 · 0 评论 -
算法-二分查找法-python3实现
0.摘要本文主要介绍二分查找法的基本原理,并使用python3进行实现。 1.二分查找法原理算法要求:数据采用顺序存储结构 必须按照关键字大小有序排列(升序或者降序)数据以升序排列为例:step1:将表中间位置的值与查找关键字比较,如果两者相等,则查找成功,返回中间位置;否则转step2step2:利用中间位置,将表分成前、后两个子表; ...原创 2018-09-23 22:05:39 · 454 阅读 · 0 评论 -
算法-快速排序-python3实现
0.摘要本文主要介绍快速排序原理,并用python3进行实现。 1.原理我们通过一个具体数组排序,进行讲解:我们取一个数组array = [10 15 2 45 34 16 46 67 93 83]step1:先将最左侧或最右侧的值选定为参考值。本文选取左侧值为参考值,并将参考值存放到key中,即key = array[0]。由于array[0]的值已经复制到了k...原创 2018-09-19 13:25:49 · 1689 阅读 · 1 评论 -
LeetCode-236. Lowest Common Ancestor of a Binary Tree-python3代码+解题思路
0.原题:Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two n...原创 2018-09-10 16:21:07 · 498 阅读 · 0 评论 -
递归-python3解决n个数的排列问题
0.摘要给定n个不相同的数字,输出所有的排列方式。 1.思路首先,我们回忆一下数学上解决排列问题的方法:我们先从所有数据中选取一个,放在第一位;然后,再从剩下的数据中选取一个,放在第二位;不断重复,直到最后一位。这样我们就得到了所有的排列结果。写成具体可操作的步骤即:step1:a[0],a[1]……a[n],从n个元素选择一个step2:除去step1已经选取的元...原创 2018-09-16 22:42:56 · 1924 阅读 · 0 评论 -
递归-从斐波那契数列(Fibonacci sequence)问题看剪枝重要性
0.摘要本文主要通过对斐波那契数列算法复杂度的分析,展示剪枝在递归中的重要性。 1.递归求解斐波那契数列问题的时间复杂度。回顾一下斐波那契数列问题:斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)这是一个...原创 2018-10-06 22:29:45 · 1119 阅读 · 1 评论