我之前的一篇学术课程中有以下关于二阶树(不是BST)的有序遍历(它们也称之为pancaking)的文本:
有序树遍历
在树的外面画一条线.从根的左侧开始,绕过树的外部,最后到根的右侧.尽可能靠近树,但不要越过树.(想想树 - 它的分支和节点 - 作为一个坚实的障碍.)节点的顺序是这条线在它们下面经过的顺序.如果您不确定何时"在节点下面",请记住"左侧"节点始终位于第一位.
这是使用的示例(从下面略微不同的树)

但是,当我在谷歌搜索时,我得到一个相互矛盾的定义.例如维基百科的例子:
![]()
顺序遍历序列:A,B,C,D,E,F,G,H,I(左子节点,根节点,右节点)
但根据(我的理解)定义#1,这应该是
A,B,D,C,E,F,G,I,H
任何人都可以澄清哪个定义是正确的?它们可能都描述了不同的遍历方法,但碰巧使用相同的名称.我很难相信同行评审的学术文本是错误的,但不能确定.
Class A { }
Class B : A { }
B ItemB = new B();
A ItemA = (A)B;
Console.WriteLine(ItemA.GetType().FullName);
Run Code Online (Sandbox Code Playgroud)
是否可以执行类似上面的操作并让编译器打印出类型A而不是类型B.基本上,是否可以永久地转换对象以使其"丢失"所有派生数据?
我有以下徽标,其显示与FF3,Chrome(#363636)中的HTML正文相同的背景颜色.
但在IE8中它会显示不同的深色.
这个FF3/Chrome是原谅我的PNG,还是只是另一个IE bug(我认为他们修复了IE7中的PNG支持)?
更新:我仍然遇到这个问题,我用来纠正它的pngcrush参数是:
pngcrush -replace_gamma 0.5181347 infile.png outfile.png
Win32二进制链接在这里.
我正在写一篇关于Guids/UID的人类可读替代品的小文章,例如在TinyURL上用于url哈希的那些(通常在杂志中打印,因此需要简短).
我生成的简单uid是 - 6个字符:小写字母(az)或0-9.
"根据我的计算队长",这是6个相互排斥的事件,虽然计算冲突的概率比P(A或B)= P(A)+ P(B)稍微硬一点,显然它包括数字和来自下面的代码,您可以看到它是否使用50/50的数字或字母.
我对冲突率很感兴趣,如果下面的代码是对生成哈希值的预期冲突率的真实模拟.平均而言,我每百万得到40-50次冲突,但是考虑到uid不会一次产生一百万次,但可能只有每分钟大约10-1000次.
每次冲突的可能性是多少,谁能建议更好的方式呢?
static Random _random = new Random();
public static void main()
{
// Size of the key, 6
HashSet<string> set = new HashSet<string>();
int clashes = 0;
for (int n=0;n < 1000000;n++)
{
StringBuilder builder = new StringBuilder();
for (int i =0;i < 7;i++)
{
if (_random.NextDouble() > 0.5)
{
builder.Append((char)_random.Next(97,123));
}
else
{
builder.Append(_random.Next(0,9).ToString());
}
}
if (set.Contains(builder.ToString()))
{
clashes++;
Console.WriteLine("clash: (" +n+ ")" +builder.ToString());
}
set.Add(builder.ToString());
_random.Next();
//Console.Write(builder.ToString());
}
Console.WriteLine("Clashes: …Run Code Online (Sandbox Code Playgroud) 任何人都可以指向一个网站,或者给我一些关于如何选择接口,类甚至与该对象或方法有关的方法和属性的名称的智慧?
这是专门针对Microsoft开发的,因此Java-esque"doGet"等并没有真正使用,但是跨越语言障碍的一些通用规则必须(我会想到)存在.
一个例子可能会有所帮助:我有4个接口名称选择:
IGroupedItem
IGroupableItem
IDataEntity
IGroupedEntity
Run Code Online (Sandbox Code Playgroud)
它们都包含形容词和名词,或者只是名词.看看.NET框架,为了保持一致,似乎必须有某种规则集?除了明显的方法动词.
编辑:虽然示例是一个接口,但我并不仅限于接口.一般准则是类是名词,方法动词,属性名词.我想我的意思是同义词的选择.到处扔"实体"是错误的
就像帖子中的问题一样,我需要能够搜索 3 种可能的情况。我需要全部大写,或小写,或正常大小写。
如果这是不可能的,有没有办法做一个不区分大小写的过滤器?
allMarkdownRemark(filter: { brand: { eq: $normalBrand } }) { //==> Need more here
edges {
node {
webImages {
url
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我发现有些人这样做:
filter: { OR: [
{brand: { eq: $normalBrand }},
{brand: { eq: $normalBrand2 }},
{brand: { eq: $normalBrand3 }}
]}
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用
任何人都可以解释为什么以下不编译?
byte b = 255 << 1
Run Code Online (Sandbox Code Playgroud)
错误:
常量值'510'无法转换为'字节'
我期待二进制中的以下内容:
1111 1110
Run Code Online (Sandbox Code Playgroud)
类型转换困扰了我.
在谷歌宣布他们最近删除了他们的SOAP API的 " SOAP搜索API退役很好 "之后,我很好奇社区在2009年对SOAP的看法.我可以看到它用于远程处理和更详细的客户端 - 服务器无状态沟通,但对于更广泛的[Ajax]网络使用,它现在是多么重要?
让REST URL一劳永逸地删除了对SOAP和那种Web服务的需求吗?
Java Date类中是否存在Java等效的DateTime.MinValue和DateTime.Today?还是一种实现类似的方式?
我已经意识到你对.NET datetime类的破坏程度,我还需要相当于AddDays(),AddMonths().
我为ASP.NET Web控件(服务器控件)项目添加了一个预构建操作,该项目在一组Javascript文件上运行jsmin.exe.这些输出文件是源控件树的一部分,并嵌入到程序集中.
问题是当预构建运行时,jsmin无法以只读方式写入文件.是否可以事先检查文件?或者我被迫在命令行中设置文件的属性.
任何改进的解决方案都是受欢迎的.
更新 Mehmet答案的一个小问题 - 您需要在VS目录前添加:
"$(DevEnvDir)tf" checkout /lock:none "$(ProjectDir)myfile"
Run Code Online (Sandbox Code Playgroud)