剑指 Offer 26. 树的子结构 - 力扣(LeetCode) (leetcode-cn.com) B是A的子树的情况: B先遍历空A=BB是A的左子树,或右子树。 如果B先为空,则B是A的子树;如果A先空,则B不是A的子树。 需要一个函数比较A的子树和B相同,则B是A的子树:A子树根节点和B根节点相同,左右相等。 /** * Definition fo
Given the head of a linked list and an integer val, remove all the nodes of the linked list that has Node.val == val, and return the new head. /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * L
写在前面: 链表的题 1.取独立节点,保存接口,接口即->next 2.会用哑节点,return dummy->next 3.最重要的是->next,理解,理解再理解,并随时能够掌握它的最新变化。 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln →
备战复试,每日三题 题目一: 比特位计数 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。 示例 1: 输入:n = 2 输出:[0,1,1] 解释: 0 --> 0 1 --> 1 2 --> 10 示例 2: 输入:n = 5 输出:[0,1,1,2,1,2] 解释: 0 -->
剑指 Offer 34. 二叉树中和为某一值的路径 原题链接:https://leetcode-cn.com/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/ 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点
备战复试,每日三题 题目一:递增的三元子序列(leetcode1.12每日一题) 给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。 示例 1: 输入:nu
ou are given the root of a binary tree where each node has a value 0 or 1. Each root-to-leaf path represents a binary number starting with the most significant bit. For example, if the path is 0 -> 1 -> 1 -> 0 -> 1, then this could represent
C++设计模式之单例模式(Singleton) 1、序论 在软件系统中,经常有这样一些特殊的类,必须保证它在系统中只存在一个实例,才能保证它们的逻辑正确、以及良好的效率 如何绕过常规的构造器,提供一种机制来保证一个类只有一个单例对象? 有人说可以提醒用户只构建一个这个对象,但是从
树 基本概念 根结点:没有父结点的结点 叶子结点:没有子结点的结点 非叶结点 祖先结点 子孙结点 结点的度:该结点子结点的个数 树的度:树中结点度最大值即为整棵树的度 路径 路径长度 有向树 无向树 结点的层数:从根结点开始, 根结点为0层, 以此类推 结点的
题目 226. 翻转二叉树 思路 递归方法; 对于每一次使用交换左右节点之后进行递归遍历; 代码 递归方法: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr)
数据结构与算法学习(4) 一.排序算法总结 1.选择排序:时间O(n^2) 空间O(1) 不稳定 2.冒泡排序:时间O(n^2) 空间O(1) 稳定 3.插入排序:时间O(n^2) 空间O(1) 稳定 4.快速排序:时间O(nlogn) 空间O(logn) 不稳定 5.归并排序:时间O(nlogn) 空间O(N) 稳定 6.堆排序:时间O(n*logn) 空间O(1)
哈夫曼树(Huffman树)原理分析及实现 1 构造原理 假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为: (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); (2) 在森林中选出两个根结点的权值最小的树合并,作
上一篇实现了windows的音视频设备热插拔功能,这一篇集成到SDK中。我的对外接口类是HCMDesktopRecorder,该篇主要讲如何集成热插拔功能,其他代码忽略。 1、开启并注册热插拔 int HCMDesktopRecorder::init(/* 忽略 */) { /* 忽略 */ // Create thread for detect device call
#ifndef PCH_H #define PCH_H extern "C" { #include "libavutil/opt.h" #include "libavutil/channel_layout.h" #include "libavutil/common.h" #include "libavutil/imgutils.h" #include "li
#include <iostream> using namespace std; struct my_list{ int val; my_list* next; my_list(int _val):val(_val),next(nullptr){} }; my_list* reverse_list(my_list* head) { if(head==nullptr) return head;//为空的情况 my_list* pre=
#include <bits/stdc++.h> using namespace std; struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeN
将单链表按照递增排序 点击查看代码 void inorder(linklist &l) { lnode *p = l->next, *r, *q; // 摘下头结点作为有序表 l->next = nullptr; while (p) { // r和p遍历无序表 r = p; p = p->next; // q遍历有序表,找出无
顺序输入n个元素建立单链表 点击查看代码 #include <bits/stdc++.h> using namespace std; //采用尾插法 void rearinsert(linklist &l,int n) { l = new lnode; l->next = nullptr; //设置尾指针 lnode *r = l; for (int i = 0; i < n; i++) { l
背景介绍: 题目虽然做出来了,但是总是跟标准答案差一点优化,所以写下此博客来做笔记。 首先看看标准答案代码: class Solution { public: void dfs(TreeNode* root,string path,vector<string> &paths){ path+=to_string(root->val); if(root->left==null
第一章 基础知识 1.7 指针、数组和引用空指针 1.7 指针、数组和引用 最基本的数据集合类型就是数组——一种空间连续分配的相同类型的元素序列。这基本上就是硬件所提供的机制。元素类型为char的数组可像下面这样声明: char v[6]; //含有6个字符的数组 类似地,指针可这样
要求:首先最底层,其次最左边 思路:层序,可以记录每层个数找到最后一层第一个,也可以把层序改成从右到左,这样最后一个就是答案 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(
leetcode: 203. Remove Linked List Elements 原题链接 方法一:直接使用原来的链表来进行移除节点操作: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListN
这是第一次自己写层次遍历,花了半个小时吧,有很多不足 例如我对于队列每一层的循环,就显得一点智慧没有 class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<int>temp_val; vector<vector<int>>result; queue<TreeNode
404. 左叶子之和 题目链接:404. 左叶子之和(简单) 计算给定二叉树的所有左叶子之和。 示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 题解 思路 这道题的关键是如何找到左叶子节点。通过观察,我们可以发现,判断节点是否是左
Version:4.26.2 UE4 C++工程名:MyProject 在《宏GENERATED_BODY做了什么?》中,简单分析了GENERATED_BODY宏给一个简单的、继承自UObject的自定义类添加了什么。 当中涉及到的源码文件有:ObjectMacros.h、MyObject.h、MyObject.generated.h, UObjectGlobals.h; 现在来分析一下UHT生成