平衡二叉树
平衡二叉树平衡二叉树(AVL)定义 为避免树的高度增长过快,降低二叉树的性能,我们规定在插入和删除结点时,要保证任意结点的左右子树高度差的绝对值不超过1,将这样的二叉树称为平衡二叉树(AVL)。定义结点左子树与右子树的高度差为该结点的平衡因子,则平衡二叉树结点的平衡因子的值只可能是 -1, 0或 1。
平衡二叉树:一棵空树,或是具有以下性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度差的绝对值不超过1。
平衡二叉树的插入 基本思路:每当在二叉排序树中插入(删除)一个结点时,首先检查其插入路径上的结点是否因为此次操作二导致了不平衡。若导致了不平衡,则先找到插入路径上离插入结点最近的平衡因子的绝对值是否大于1的结点A,再对以A为根的子树,在保持二叉排序树的特性的前提下,调整各个结点的位置关系,使之重新达到平衡。
平衡二叉树的插入过程的前半部分与二叉排序树相同,但在新结点插入后,若造成查找路径上的某个结点不再平衡,则需要作出相应的调整。一般可将失去平衡后进行调整的规律归纳为下列 ...
【阅读】-贫穷的本质
贫穷的本质是什么?
穷人缺乏有效的避险工具
穷人会生一堆孩子,但生孩子不是观念落后,而是一种理性思考,因为穷人所在的国家往往没有社会保障体系,想规避养老和医疗风险,只能依靠自己的子女,但是子女身上不确定性太多,或者早夭,或者关系不好,或者没能力养老,穷人往往采取多生几个的策略,尽量规避风险。
婚姻也是一种规避风险的方式。印度的穷人一般会将自己的女儿嫁到不远不近的村庄,如果两个村子太近,气候完全一样,你这里发洪水,我这个也发洪水,谁也帮不上谁。两个村子隔开一段距离,气候条件就不一样了,遇到灾险,不至于全军覆没,还可互相帮助。
穷人借高利贷,是因为正规金融体系排斥穷人。高利贷的利息高是由风险定价决定的,并非剥削。穷人使用高利贷规避可能出现的灾病风险,几乎不可能脱贫,因为高利贷的利息成本和穷人的违约率“一损俱损”。
穷人不做远期规划
绝大多数地方的穷人对教育很不重视,即便很多慈善组织跑来给他们建立学校、普及教育的好处,家长们积极性也不高。因为穷人并不确定10个儿女里,哪个可能会给他养老,而偏偏教育是个长期投入,要好多年后才能看到成效。让穷人赌一个遥遥无期的结果,要冒太大风 ...
【阅读】-论语摘抄
论语摘抄
学而篇
子曰:不患人之不己知,患不知人也。
不怕别人不理解我,就怕自己不了解别人。
为政篇
子游问孝。子曰:今之孝者,是为能养。至于犬马,皆能有养,不敬,何以别乎?
如果只是以物质赡养父母,而不在精神上做到孝,那其实不是真正的孝。要体悟父母的心情,让他们安心。
大勇若怯,大智若愚
苏东坡所说,并不是论语里面的。
子曰:君子不器。
君子应该博学多识,而不是像器具一样,只有一方面的用途,我觉得应该是各方面都有所涉猎,同时也有专精的地方。
子曰:先行其言而后从之。
先行其言二后从之。先做再说。
子曰:君子周而不比,小人比而不周。
孔子说:君子能普遍地团结人而不与人相互勾结;小人与人勾结而不能普遍地团结人。
子曰:人而无信,不知其可也。大车无輗,小车无樾,其何以行之哉?
如果一个人不讲信用,不知道他怎么可以做人。好比大车没有套横木的輗,小车没有套横木的樾,怎么能行走呢?
子曰:非其鬼而祭之,谄也。见义不为,无勇也。
不是自己应该祭祀的鬼神而去祭祀它,这就是献媚。需要见义勇为时却不能挺声而出,这是懦弱。
里仁篇
子曰:里仁为美,择不处仁,焉得知?
居 ...
树和二叉树基本概念
基本概念树定义 树是n个结点的有限集合,n = 0 时,称为空树。在任意空树中应满足:
有且仅有一个特定的称为根的结点
当 n > 1时,其余结点可分为 m 个互不相交的有限集合,其中每个集合本身又是一棵树,并且成为根节点的子树。
树的定义是递归的,也是一种递归的数据结构。有两个特点:
树的根节点没有前驱结点,除根节点外的所有结点有且只有一个前驱结点
树中所有结点可以有零的或多个后继结点
树适合表示具有层次结构的数据。数中的某个结点最多只和上一层的一个结点有直接关系,根结点没有直接上层结点,所有在n个结点的书中有 n - 1 条边。
基本术语 这里要注意的主要是:
1)**祖先结点 **对应 子孙结点; 双亲结点 对应 孩子结点; 具有相同双亲的结点称为 兄弟结点。
2)树中一个结点的子结点个数称为结点的度;树中结点的最大度数称为树的度。
3)度大于0 的称为 分支结点;度为 0 的结点称为 叶子结点;
&e ...
哈夫曼树
哈夫曼树哈夫曼树的定义 在许多实际应用中,树中结点常常被赋予一个表示某种意义的数值,称为该结点的权。从树根结点到任意结点的路径长度(经过的边数)与该结点上权值的乘积,称为该结点的带权路径长度。树中所有结点的带权路径长度之和称为全树的带权路径长度,记为:$$WPL=\sum_{i=1}^n W_iL_i$$ Wi 是第i个结点所带的权值,Li 是该结点到根结点的路径长度。
在含有n个带权叶子的二叉树中,其中带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称最优二叉树。
(a)WPL = 7 x 2 + 5 x 2 + 2 x 2 + 4 x 2 = 36;
(b)WPL = 7 x 3 + 5 x 3 + 2 x 1 + 4 x 2 = 46;
(c)WPL = 7 x 1 + 5 x 2 + 2 x 3 + 4 x 3 = 35;
其中,c中的树的wpl最小,可以验证,它恰好为哈夫曼树。
哈夫曼树的构造 算法描述如下: ...
股票实战法
在股市稳定赚钱的人,肯定有自己的交易系统;有自己交易系统的人,不一定在股市稳定赚钱。
做短线最需要的是什么?1、执行力 执行力说人话就是:自己决定的事打死也要做到。你只需要勇敢地执行你认为对的事情,增加计划中的交易,并提高计划交易的质量。任何一个超短交易模式加上钢一样的执行力都是一个稳定收益模式的开始,无关技术,只看性格和时间。
2、稳定盈利模式 超短的盈利模式有很多种,适合自己的才是最好的,只要你能严格执行2年以上,保证每3个月都能盈利,就算是稳定的盈利模式了。最基本的稳定盈利模式就是一招打遍天下无敌手。
指标1: 高成功率的指标之王(MACD)一、什么是MACD? MACD(异同移动平均线)指标,下面是MACD图:
1、DIFF,也就是图中的黄线。DIFF是短期(常用12日)指数移动平均线与长期(常用26日)指数移动平均线的差值。因为其变动较为灵敏,又称快线。
2、DEA ...
二维图形生成算法
直线图形 绘制直线段一般需要进行栅格化(又叫光栅化)处理:将几何数据经过一系列变换后转换为像素呈现在显示设备上。
数值微分算法(DDA) 数值微分算法本质为用数值方法解微分方程,即通过同时对x和y个增加一个小增量,计算下一步的x,y的值。
DDA的推导公式
DDA画线程序设计void Line_DDA (CDC *pDC,int xs,int ys,int xe,int ye, COLORREF color){ int t; float x,y,k=(float)(ye-ys)/(xe-xs); if( fbs(k) < 1){ if(xe<xs){ t=xe,xe=xs,xs=t,t=ye,ye=ys,ys=t; } y=ys; for(x=xs;x<=xe;x++) pDC->SetPixel(x,y,color), y=y+k; }else{ ...
二叉树遍历(递归,非递归)和构造
二叉树遍历和构造二叉树的遍历 二叉树遍历其实很简单,三种遍历都是一样的,只不过顺序先后不一样罢了。
先序遍历 访问根结点,先序遍历左子树,先序遍历右子树
void PreOrder(BitTree T){ if( T != nullptr){ visit(T); PreOrder(T->lchild); PreOrder(T->rchild); }}
中序遍历 中序遍历左子树,访问根结点,中序遍历右子树
void InOrder(BitTree T){ if(T != nullptr){ InOrder(T->lchild); visit(T); InOrder(T->rchild); }}
后序遍历 后序遍历左子树,后序遍历右子树,访问根结点
void PostOrder(BitTree T){ ...
UE4C++ APawn类的创建
创建一个APawn类,添加根组件和StaticMeshComponennt,并将StaticMeshComponent附着到根组件上,并添加相机 获得Pawn的控制权
MyPawn.h
// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "GameFramework/Pawn.h"#include "Components/StaticMeshComponent.h"#include "Camera/CameraComponent.h"#include "MyPawn.generated.h"UCLASS()class FIRSTDEMO_API AMyPawn : public APawn{ GENERATED_BODY()public: // Sets default value ...
UE4C++ 设置模型与材质的默认值
UE4 C++ 设置模型与材质的默认值
MyPawn.h
// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "GameFramework/Pawn.h"#include "Components/StaticMeshComponent.h"#include "Camera/CameraComponent.h"#include "Components/InputComponent.h"#include "GameFramework/SpringArmComponent.h"#include "MyPawn.generated.h"UCLASS()class FIRSTDEMO_API AMyPawn : public APawn{ GENERATED ...