.net 如何解析树数据结构?

.net 如何解析树数据结构?,.net,parsing,data-structures,expression-trees,.net,Parsing,Data Structures,Expression Trees,我有一个由节点组成的树数据结构,需要将其解析为表达式树。我的节点如下所示(简化): 找到树的底部并反向构建表达式树的最佳/正确方法是什么?你先解析左边还是右边 我认为你先朝哪个方向走并不重要。然而,在一个从左到右的语言占主导地位的世界里,如果你先往左走,别人会更直观地理解你的代码。如果你想先到树的底部,那么你可以进行“按顺序”或“按顺序”搜索。“按顺序”搜索将首先找到最底部、最左侧的节点,然后是该节点的父节点,然后是父节点的右侧子节点。“后序”搜索将在访问父节点之前“访问”左侧子节点和右侧子节点

我有一个由节点组成的树数据结构,需要将其解析为表达式树。我的节点如下所示(简化):


找到树的底部并反向构建表达式树的最佳/正确方法是什么?你先解析左边还是右边

我认为你先朝哪个方向走并不重要。然而,在一个从左到右的语言占主导地位的世界里,如果你先往左走,别人会更直观地理解你的代码。

如果你想先到树的底部,那么你可以进行“按顺序”或“按顺序”搜索。“按顺序”搜索将首先找到最底部、最左侧的节点,然后是该节点的父节点,然后是父节点的右侧子节点。“后序”搜索将在访问父节点之前“访问”左侧子节点和右侧子节点

考虑表达式“x+y”。顺序搜索将产生:

'x', '+', 'y'
'x', 'y', '+'
而订单后搜索将产生:

'x', '+', 'y'
'x', 'y', '+'

如前所述,你先去哪里并不重要。但是最常用的算法。如果这棵树是按我认为的方式组织的,建议按顺序排列:

(来自wikipedia)要按顺序遍历非空二叉树,请在每个节点上递归执行以下操作:

  • 遍历左子树
  • 访问根
  • 遍历右子树

  • (这也称为对称遍历。)

    您能提供一个所需输出的示例吗?我不清楚您是要将字符串表示形式解析到树中,还是要在解析完树后对其求值。