相关疑难解决方法(0)

如何序列化二叉树

我今天去接受采访,要求我序列化一棵二叉树.我实现了一种基于数组的方法,其中节点i的子节点(在水平顺序遍历中编号)处于左子节点的2*i索引和右子节点的2*i + 1.面试官似乎或多或少都很高兴,但我想知道序列化究竟意味着什么?它是否专门用于展平树以写入磁盘,或者序列化树还包括将树转换为链表,比方说.另外,我们如何将树扁平化为(双重)链表,然后重构它?您可以从链表重新创建树的确切结构吗?

tree serialization binary-tree flatten binary-search-tree

28
推荐指数
3
解决办法
4万
查看次数

C++/C/Java:Anagrams - 从原始字符串到目标;

我正在努力解决这个问题:http://uva.onlinejudge.org/external/7/732.html.对于给定的示例,它们给我们原始单词,例如TRIT和目标"anagramed"字符串TIRT.

目标:我们必须输出所有有效的'i'和'o'序列(分别是push和pop),它们从源字符串中产生目标字符串.

所以,我正在考虑计算"i"和"o"的所有排列,但是要减少这种情况:

1)如果当前排列以'o'开始,则停止检查,因为所有下一个排列都将以此pop命令开始,并且从空堆栈中弹出一些东西是无效的命令.

2)如果在检查过程中发现'o'命令并且堆栈中没有任何内容,则跳过该情况.

3)如果找到'i'命令并且输入字符串中没有任何内容,则跳过该情况.

4)如果找到'o'命令并且当前预期的字符不是刚刚弹出的字符,则跳过该情况,因为这将永远不会到达目标字符串.

5)不要搜索输入和目标字符串是否有不同的长度.

但我认为无论如何它可能会让我TLE ......

我知道这个理论:也许是一种排列并且一直在回溯.我实施它有太多困难.

有谁可以请与我分享一些代码或想法吗?

PS:当然,欢迎任何可能减少执行时间的建议.

c c++ java algorithm stack

2
推荐指数
2
解决办法
4456
查看次数

具有特殊属性的二叉树

存在具有特殊属性的二叉树,其所有内部节点具有val ='N'并且所有叶具有val ='L'.鉴于其预订.构造树并返回根节点.

每个节点可以有两个孩子或没有孩子

algorithm binary-tree

1
推荐指数
1
解决办法
256
查看次数