![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法相关
阿飞1120
这个作者很懒,什么都没留下…
展开
-
二叉树翻转
二叉树翻转递归思想非递归思想:翻转一棵二叉树。递归思想从根节点起,一次翻转左右孩子的值,然后再对左右字数进行递归class Solution {public: TreeNode* invertTree(TreeNode* root) { if (nullptr == root || (root->right == nullptr && ro...原创 2019-09-22 12:08:13 · 209 阅读 · 0 评论 -
位运算相关算法
啊原创 2019-10-04 23:41:42 · 182 阅读 · 0 评论 -
顺序表、链表快排,基于快排求解topK问题
快速排序和topK问题快速排序基于链表的快排基于快排思想求解topK问题快速排序1、调用partition,找到一个基准index,使得数组左边的元素都小于基准值,数组右边的元素都大于基准值2、对左侧和右侧的数组递归调用快排#include <stdio.h>const int MAX_LEN = 10;int partition(int* list, int left...原创 2019-10-04 12:12:27 · 418 阅读 · 0 评论 -
堆排序和topK问题
堆排序和topK问题完全二叉树堆排序完全二叉树完全二叉树除了树的最后一层节点不需要是满的,其它的每一层从左到右都是满的。它有以下三个特点:左孩子index=父节点index * 2 + 1右孩子index=父节点index * 2 + 2最后一个非叶子节点编号为index/2堆排序#include <iostream>// 调整最大堆int adjust_hea...原创 2019-10-02 14:22:03 · 238 阅读 · 0 评论 -
判断是否为镜像二叉
判断是否为镜像二叉树判断是否为镜像二叉树判断是否为镜像二叉树把树root,强行当做两颗树:root,root;判断这两棵树是否镜像条件1:这两棵树的根节点相等条件2:第1颗树的左孩子val 与 第2颗树的右孩子val相等第1颗树的右孩子val 与 第1颗树的左孩子val相等class Solution {public: bool isSymmetric(TreeNode* r...原创 2019-09-25 22:38:43 · 287 阅读 · 0 评论 -
二叉搜索树的最近公共祖先
二叉搜索树的最近公共祖先二叉搜索树的最近公共祖先二叉搜索树的最近公共祖先根据二茬搜索树的特性:如果两个结点val都比root结点val大,那它两都在右子树;如果两个结点val都比root结点val小,那它两都在左子树;否则root就是最近公共结点class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* r...原创 2019-09-22 14:43:41 · 243 阅读 · 0 评论 -
判断是否为平衡二叉树
判断是否为平衡二叉树判断是否为平衡二叉树判断是否为平衡二叉树1、根据基础的树深度函数判断两个子树的深度差值小于22、采用递归思想,对左孩子、有孩子判断是否是平衡二叉树class Solution {public: int node_depth(TreeNode* node) { if (node == NULL) { ret...原创 2019-09-22 14:34:54 · 117 阅读 · 0 评论 -
二叉树的层次遍历
二叉树的层次遍历二叉树的层次遍历二叉树的层次遍历采用队列先进先出的特性step1:先把根节点push进去step2.1:如果队列不为空,当前队列的size即为这一层总共的Node数,即将队列前size个node放入同一层step2.2:在2.1步骤放入新Node的过程中,如果新Node有孩子,需要将其孩子push进队列中涉及到的api:队列定义:std::queue<T>...原创 2019-09-22 14:31:15 · 213 阅读 · 0 评论 -
二叉树的三种遍历
二叉树的三种遍历中序遍历前序遍历后序遍历中序、前序、后序是指对根节点的访问顺序,孩子结点无论哪种遍历方式,都是先左后右!!!中序遍历左 中 右class Solution {public: int inorder(TreeNode* root) { if (root != NULL) { inorder(root-&...原创 2019-09-22 14:22:44 · 105 阅读 · 0 评论 -
二叉树的 最大|最小 深度
二叉树的 最大|最小 深度二叉树的最大深度二叉树的最小深度二叉树的最大深度采用递归的思想class Solution {public: int maxDepth(TreeNode* root) { if (root == NULL) { return 0; } int left_depth = ...原创 2019-09-22 12:18:48 · 203 阅读 · 0 评论 -
通过有序数组 构建二次平衡搜索树
有序数组构建二次平衡搜索树递归思想+二分查找递归思想+二分查找从根节点起,其val为数组二分查找中间值对左右孩子再进行同样的操作class Solution {public: TreeNode* to_bst(vector<int>& nums, int left, int right) { if (left > right) ...原创 2019-09-22 12:12:03 · 154 阅读 · 0 评论 -
翻转链表
翻转链表翻转链表翻转链表思想:使用三个指针pre,cur,np每次指针顺序移动后,pre结点被正确归位,while循环之后的状态见下图:class Solution {public: ListNode* reverseList(ListNode* head) { if (head == nullptr || head->next == nullptr) ...原创 2019-10-05 12:30:20 · 166 阅读 · 0 评论