考虑我想以序列化的方式传输二叉树,我只有一个字符串来传递那个树,我只能使用一次遍历的帮助,有什么方法可以做到吗? - (在Ebay被问到我)..
换句话说,只使用一个树遍历字符串可以生成二叉树吗?面试官还给了我一个提示,说我可以在没有叶子的地方使用null。
答案 0 :(得分:2)
[EDIT]鉴于这似乎是一些特定的任务,而不是真正的现实问题,答案没有意义。第二次尝试:
看到你可以使用空值,你确实可以使用带有空值的预订。
a b null null c null null
将是一棵看起来像(a (b) (c))
的树,而(a (b (c)) )
将被编码为a b c null null null null
(请注意,我给每片叶子两个空子,也许它有效没有那个)
答案 1 :(得分:2)
http://www.seas.gwu.edu/~csci133/fall05/trees-fig4.jpg
请考虑上面图片中的上面的树,如果我们想只使用1次遍历传递一个字符串,我们可以通过在该特定位置没有孩子的时候放置特殊符号。
现在如果我们通过1 2 4 7 $ $ $ $ $ $ 3 $ 6 8 $ 9 $ $
1
/ \
2 3
/ \ / \
4 5 $ 6
/ \ / \ / \
7 $ $ $ 8 9
/ \ /\ /\
$ $ $ $ $ $
这里$表示子项为空,因此移动到订单的下一个位置。
如果我错了,请纠正我,以上是不可能的......
答案 2 :(得分:0)
如果要表示string,byte []或流中的任何对象,可以查看JSON序列化或XML序列化。