所以我有一個創建一個用戶輸入號碼的主要因素二叉樹並將其顯示在TreeView控件的程序:創建一個數的因式分解的字符串(含指數)
現在我想創建像在消息框所示的那些字符串,除了與指數( 「256 = 2^8」,「1234567890 = 2 X 3^2 X 5 X 3607 X 3803 「)
我目前的代碼如下所示:
private void LabelDisplayCondensed(FactorTreeNode currentNode)
{
string result = Convert.ToString(root.Key) + " = "
+ Convert.ToString(currentNode.Left.Key);
FactorTreeNode prevNode = currentNode;
int exponent = 1;
while (currentNode.Right != null)
{
prevNode = currentNode;
currentNode = currentNode.Right;
if (currentNode.Left.Key == prevNode.Left.Key)
{
exponent += 1;
}
else
{
exponent = 1;
}
if ((exponent != 1) && (currentNode.Left.Key != prevNode.Left.Key))
{
result += "^" + exponent + " X " + currentNode.Left.Key;
}
}
MessageBox.Show(result);
}
這是我最新的絕望嘗試。該函數使用樹的根來調用。我意識到這個代碼是完全有缺陷的。目前的牆我打的是currentNode達到最右邊的子樹,評估在
if (currentNode.Left.Key == prevNode.Left.Key)
其.Left.Key關鍵和崩潰,因爲。左爲空。
我其實早得更近。我認爲500點評價爲「500 = 2^2 X 5^2^2」我認爲(而不是理想的500 = 2^2 X 5^3)
這裏是代碼爲我的FactorTreeNode:
class FactorTreeNode
{
// constants
// variables
private long data; // this is our only data, so also key
private FactorTreeNode leftPointer;
private FactorTreeNode rightPointer;
// these pointers point to the
// left and right children respectively
private FactorTreeNode parentPainter;
// pointer to the parent of the node
// constructors
public FactorTreeNode(long newValue)
{
Key = newValue;
Left = null;
Right = null;
Parent = null;
}
// Properties
public long Key
{
get
{
return data;
}
set
{
data = value;
}
}
public FactorTreeNode Left
{
get
{
return leftPointer;
}
set
{
leftPointer = value;
}
}
public FactorTreeNode Right
{
get
{
return rightPointer;
}
set
{
rightPointer = value;
}
}
public FactorTreeNode Parent
{
get
{
return parentPainter;
}
set
{
parentPainter = value;
}
}
}
我一直在咀嚼這一整天。我感謝任何幫助。
你沒有說你嘗試了什麼,也沒有說明狀態是什麼,也沒有說你的代碼爲什麼被破壞。你期望什麼樣的幫助? – Noctis
我認爲這個問題非常清楚,並顯示瞭解決問題的嘗試。 – Ergwun
對不起,Noctis。我有點油炸。我試圖澄清一些。 – Gerald