![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
jensonliu
第一次 是小白
展开
-
JS | 重温爬楼梯问题
无意中又刷到的一道经典的递归/动态规划问题,整理一下自己的解法题目:每次爬 1 或 2 个台阶,爬上n阶有几种爬法?1.直接递归:简单暴力,但复杂度.. 不仅会有很多重复计算,还有可能栈溢出 var climbStairs1 = function(n) { if(n<=2){ return n; } return clim...原创 2019-08-11 01:19:55 · 1437 阅读 · 0 评论 -
二叉树 | 前中后序深度优先遍历(递归与非递归)
递归实现:// 前序遍历 function pre(root,result){ if(!root){ return 0; } if(root){ result.push(root.val); } pre(root.left,result); pre(root.right,result); return result; } // 中序遍历 fu...原创 2019-08-16 15:24:45 · 321 阅读 · 0 评论 -
二叉树 | 层次遍历(广度优先)
二叉树深度优先遍历的非递归做法是用stack实现,而层次遍历多是使用队列实现。主要思路:从根结点开始,未访问的结点入队,访问后则出队,并将其左右子结点入队,直到叶子结点结束.分层访问,即通过队列长度控制每层遍历访问的节点数.如第一层访问一个节点后,queue此时为第二层的节点,queue.length为2,第二层访问两个节点后,queue此时为第三层的节点…function BFS...原创 2019-08-16 19:42:11 · 747 阅读 · 0 评论 -
二叉树 | 搜索树(排序树/查找树)
特点1. data域不允许重复2. 左节点的data值小于父亲节点的data 右边节点的data大于父亲节点的data3. 结构上多了一个指向父亲节点的指针 可以回退 方便查询4. 每一颗子树也是一个二叉搜索树5. 其中序遍历结果:数字从小到大 构建 // 结点 每个结点只有一个有效父亲结点 function TreeNode(x) { thi...原创 2019-08-30 11:35:30 · 391 阅读 · 0 评论 -
字符串的全排列
Q:输入一个字符串,按字典序打印出该字符串中字符的所有排列,例如abcA: 先确定第i个字符(从i到最后完成遍历枚举),然后对i+1~N-1个字符递归使用全排列通俗的说,就是先确定第一个元素,如上图有三种情况,然后确定第二个元素… 确定每一个元素的方法是依次交换。如确定第一个元素:依次用 arr[0],arr[1] ,arr[3] 和 arr[0]交换,即确定了三种情况。然后在第一个元素...原创 2019-09-16 20:14:31 · 119 阅读 · 0 评论