我最近一直在研究树的实现以及如何表示和理解树。我的重点是将数学表达式转化为二叉树,我提出了一个问题:如何用线性形式(例如字符串或数组)表示树,同时仍然保留有关树及其子树的重要信息。
因此,我开发了一种非常简单的二叉表达式树编码方法,可以做到这一点。然而,我在以递归方式有效地实现它方面遇到了一些问题,这似乎是该概念失败的一个方面。
如果节点作为左子节点存在,则给予1的映射;如果节点作为右子节点存在,则给予0的映射。这种简单的编码方式使我能够像这样对整个平衡和不平衡的树进行编码:
因此,我开发了一种非常简单的二叉表达式树编码方法,可以做到这一点。然而,我在以递归方式有效地实现它方面遇到了一些问题,这似乎是该概念失败的一个方面。
如果节点作为左子节点存在,则给予1的映射;如果节点作为右子节点存在,则给予0的映射。这种简单的编码方式使我能够像这样对整个平衡和不平衡的树进行编码:
## ##
/ \ / \
1 0 OR 1 0
/ \ / \ / \
11 10 01 00 01 00
Etc to trees of depth N
如何创建一个递归函数来创建表示此类映射的前缀字符串(例如## 1 11 10 0 01 00)?是否有任何建议?
由于需要在保留父元素的值并将其连接起来时不断在1和0之间切换,因此我被告知这可能很困难/不可能。
我想知道是否有人对如何使用C#实现此功能有任何见解或想法?