有点像计算机科学的新手。
我有Ruby中二叉树的基本知识:
class Node
attr_accessor :left, :right, :value
def initialize(value)
@value = value
end
end
如果我手动构造它,例如,如果我希望tom是ben的子节点,这就很好了。
ben = Node.new('Ben')
tom = Node.new('Tom')
ben.left = tom
我需要解决的挑战之一是如何为输入的父/子对构建树。下面是一个输入字符串示例:
peter tom
peter m
我试图想出一个从二叉树/二叉树中删除重复项的算法。到目前为止我能想到的是
将树的顺序遍历存储在数组中。
如果树没有排序,则对数组进行排序。
从数组中删除重复项并重建二叉树。
我们是否也需要存储树的预顺序遍历来重建树?
这使得复杂性出现在O(n log n )时间和O(n)空间上。我们能做得更好吗?伪代码/代码示例将不胜感激。
编辑1:假设二叉树的结构由以下对象提供
public class Node
{
int data;
Node right;
Node left;
// getters and setters for the left and right node
我目前正在将应用程序从JBoss5迁移到JBoss7.0.4。作为迁移的一部分,我还将Sybase驱动程序从Jconn3更改为Jconn4。我在JBoss 7中使用JBoss 4.jar执行Sybase过程时,得到了以下错误:
2017.05.26 05:53:17 ERROR stderr(71): Caused by: com.sybase.jdbc4.jdbc.SybSQLException: Stored procedure
'sp_update_trade_data' may be run only in unchained transaction mode. Th
我知道,BST不允许重复。例如,如果我有一个词"RABSAB“。
上面字符串的二进制搜索树是:
R
/\
A S
\
B
如果我们想把重复的东西包括在树上呢。树会怎么变?我在一次面试中被问到这个问题。
他们让我画:
二叉树
一种不平衡的二叉树搜索
没有重复项的二进制搜索树
具有重复项的二进制搜索树
任何帮助都是非常感谢的!
PS:帮我画相关的树
我有一个未排序对象的列表。这些对象表示一个二叉树。
对象列表:
new List<Object>
{
new { Id = 3, Left = /, Right = / }
new { Id = 5, Left = /, Right = / }
new { Id = 4, Left = 2, Right = 5 }
new { Id = 2, Left = 1, Right = 3 }
new { Id = 1, Left = /, Right = / }
}
二叉树:
4
/ \
2 5
/ \
1