2
我有一個包含數學表達式的二叉樹。我使用數組來保存二進制樹在內存中。 我將運算符(如+或tan)保存爲數組中的字符串。對於每個i節點,左節點索引是2 * i + 1,右節點索引是2 * i + 2。每個節點都可以是操作數或操作符。我想將二叉樹轉換爲數學表達式,如下所示:「2 + tan(tan(10))」。如何將二叉樹轉換爲C#中的數學表達式?數學表達式的二叉樹
+
/\
2 tan
/\ ===> "2+tan(tan(10))"
tan
/\/\
10
這是我的二叉樹代碼:
public class Tree
{
private readonly List<Node> _nodes;
public Tree(int size)
{
_nodes = new List<Node>();
for (var i = 0; i < size; i++)
{
_nodes.Add(new Node(i, null));
}
for (var i = 0; i < size; i++)
{
if (2*i+1 > size-1 || 2*i+2 > size-1)
break;
_nodes[i].Left = _nodes[2*i + 1];
_nodes[i].Right = _nodes[2*i + 2];
}
}
...
}
tnx,你能寫你的遞歸函數的僞代碼嗎? – ArMaN 2014-12-07 20:43:27
這被稱爲按順序樹遍歷。你必須記住,不同的操作符具有不同的優先級,而在中綴表示法中,你可能必須使用括號。 – Grx70 2014-12-07 20:45:46
@ArMaN現在我不能寫僞碼,因爲我在iPhone上:)但是當我回到電腦時,我可能會寫一些。 – dasblinkenlight 2014-12-07 20:48:04