【发布时间】:2018-09-08 03:39:36
【问题描述】:
我有一个这样的字符串:
*b+a-aQa
并希望将其转换为这样的分层树结构:
树将由如下节点组成:
public class TreeNode : ITreeNode
{
public string Expression { get; set; }
public bool Terminal { get; set; }
public List<ITreeNode> Children { get; set; }
}
public interface ITreeNode
{
string Expression { get; set; }
bool Terminal { get; set; }
List<ITreeNode> Children { get; set; }
}
这里的表达式例如是:
*
Terminal表示节点是否为终端节点(b,a,a,a)。
我正在尝试提出一种算法来创建给定字符串的树。任何帮助将不胜感激。谢谢!
为了提供更多上下文,这与此paper 相关。
PS:
另一个例子:
Q*+-abcd
这个含义如下(Q=平方根):
【问题讨论】:
-
谢谢亨克。不是100%你的意思。我添加了另一个示例(请参阅 PS)。这里左边的节点不是终端。
-
但是第二个例子不是表达式树。为什么 Q 会成为 * 的父级,这甚至意味着什么?
-
Q 是平方根。我补充一下意思。
-
对。然后查找“前缀解析器”。
-
有点像二叉堆,但不完全是。
标签: c# binary-tree expression-trees genetics