- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
考虑这棵树:
7
/ \
/ \
/ \
1 9
/ \ / \
0 3 8 10
/ \
2 5
/ \
4 6
顺序:
0、1、2、3、4、5、6、7、8、9、10
预购:
7、1、0、3、2、5、4、6、9、8、10
在进行中序遍历时,首先定位到最左边的节点,然后从那里开始遍历。但是当涉及到 Preorder 时,相同的逻辑(如 最左边的中间节点)不适用
在上面的树中,除了根节点 7 之外,还有 1 和 9 都是中间节点。 1 是最左边的中间节点,9 是最右边的中间节点。按照上面InOrder应用的逻辑,Preorder遍历应该是从节点1开始的,也就是最左边的中间节点,但不是这样,为什么?
为什么 Inorder 遍历从leftmost left node 而 PreOrder 遍历不是从leftmost middle node ?
谢谢,克里斯。
最佳答案
Preorder 总是将父级放在其后代之前(这是它的定义),因此它必须从根开始。如果愿意,您可以使用术语“最中间的中间节点”来表示根。
preorder 的典型用法是标准函数符号:如果你有类似的东西
f(g(x, h(y, z)))
那么这是以下表达式树的预序符号,它使用内部节点的函数名称和变量作为离开节点:
f
|
g
/ \
x h
/ \
y z
另一方面,+
和 *
等运算符的常用符号使用中序:
a + b * c
是
的顺序符号 +
/ \
a *
/ \
b c
如果我们使用 *
比 +
绑定(bind)更强的标准数学优先规则。
并在 reverse polish notation 中编写表达式将是 postorder 的一个例子。
关于algorithm - Inorder 从 "leftmost left node"开始那么为什么 Preorder 不从 "leftmost middle node"开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18521096/
我在一个 anchor 内有一个内联 block 元素(跨度),它的高度为 40 像素。我尝试将 span 垂直居中,但它的位置更可能靠近底部。它不在中间。我怎样才能真正垂直居中该跨度? JSFidd
在我的 HTML 中,我有一个 div,它有三个 div 作为子元素。我想让第二个和第三个 child (分别是文本和按钮)居中对齐。 Some Text
当使用浏览器网络检查器时,我遇到了 CSS 属性 vertical-align 的两个不同的非标准属性。 -webkit-baseline-middle 仅在 Chrome 中可用,而 -moz-mi
下面的方法不会编译: public K test(K a, K b) { return a.test(); //a.test() returns Middle } 如果我们将K设置为
我有三列,中间列有一个按钮,我想在中间垂直对齐。 Cli
试图解决要求的家庭作业问题:更改姓名,以便姓在前。示例:“Mary Jane Lee”将返回“Lee, Mary Jane”。如果名称中没有空格,则原样返回。 经过一些研究,我似乎可以使用 Split
我需要使用 IE11 在 SVG 中完美地居中文本元素。 预期结果(所有 Evergreen 浏览器): IE11 结果: //SVG 代码: 1 Codepen 最佳答案
我有一个结构数组,这些结构基本上是形成一条边的两个点。由于性能,我使用结构。 现在我有对象 A 保存边缘和这个对象中的一个方法来告诉另一个对象 B 关于这个边缘数组中的连续边缘列表。 边缘: e0 e
我试图将两个链接垂直对齐到 Logo 的两边中间,但它似乎不起作用。此外,我想让它成为一个响应式导航,两个链接都以 Accordion 下拉方式显示在 Logo 下方。我一直在到处寻找解决方案,但找不
据我所知,vertical-align: middle; CSS 属性仅适用于 display 选项设置为 的元素表格单元格。 那么为什么 vertical-align 在 button 元素上被接受
我有两个值 v1 和 v2,分别是 T1 和 T2 类型,sizeof(T1)>sizeof(T2)。两种类型都是普通旧数据。现在,我想用 v2 的字节替换 v1 的第 k、k+1、... k+siz
直播:http://jsfiddle.net/8hAv3/ #main { width: 100px; height: 100px; background-color: red
jsFiddle:http://jsfiddle.net/2CRZP/ 我想使用 vertical-align:middle 或其他东西 (CSS) 将灰色框放在屏幕中间。
表格和表格单元格不起作用。我将表格的高度设置为 100% 并将表格单元格设置为自动。然后我尝试将 table-cell 设置为 vertical-align middle 100% 宽度但不起作用。我
我正在尝试编写一个函数来 找到图片的高度 执行计算(200px - 图片高度) 为每个不同的缩略图添加一个 css 样式(.imgk{margin-top:"calculated value";})。
我想将 img 元素放在 div.partners-slider 的中间。这是一个响应式 slider ,我无法设置固定高度。有什么建议吗? jsfiddle HTML
我试图将此文本区域的标签对齐到文本框的中间,但它不起作用。输出看起来像这样: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx
在下面的测试用例中,替代文本水平居中,但它固定在框的顶部。我如何在中间获取它? 最佳答案 表格的一个优点是它们提供跨浏览器的垂直居中。 DIV 没有。
我正在为本质上是一个 n 层协作应用程序(不是企业级,只是一个具有显着增长潜力的小型项目)开发一种新架构,我已经在尝试训练自己使用 IoC,并且在某种程度上, TDD,而且我想知道,一般来说,手动编写
我有一个想法,但不知道是否可以这样做: 是否可以编写一个 USB 摄像头驱动程序,该驱动程序可以将视频源多路复用到任何需要它的软件? 一种“中间人”司机:) 最佳答案 如果需要 Linux 驱动程序,
我是一名优秀的程序员,十分优秀!