恐らく超簡単な質問ですが、私はFormsのやり方についてはわかりません。WindowsでBSTのプレオーダーを印刷してくださいフォームのラベル
WinformのコードでPreorder traversalメソッド(別のクラスで実装されています)を呼び出して、PreorderがFormインターフェイスのラベルに印刷されるようにする必要があります。
私はBSTクラスを持っています。ここには、Preorderでツリーをトラバースする方法があります。ツリーに値を挿入する方法もあります。ように:
namespace BinaryTree //the BST's class
{
public partial class BinarySearchTreeNode<T> where T : IComparable<T>
{
public void Insert(T value) //method for inserting
{
....
}
public IEnumerable<T> Preorder() //method for Preorder traversal
{
List<T> preOrdered= new List<T>();
if (_value != null)
{
preOrdered.Add(Value);
if (LeftChild != null) //
{
preOrdered.AddRange(LeftChild.Preorder());
}
if (RightChild != null) //
{
preOrdered.AddRange(RightChild.Preorder());
}
}
return preOrdered;
}
}
ここでは、私はWindowsフォームインターフェイスがあります。それは、がは(inputTextBoxに値を入力してbtnCreateをクリックして)ツリーに値の追加とため、新しいツリーを作成するためのコードは(PaintTree経由で)ユーザーにツリーを表示持っていますが、私はまた、印刷する必要がありますツリーのPreorderをユーザ(たとえば、インタフェースのラベルに)に追加します。
私はこのために "PreorderLabel"というラベルがインターフェイスにあります。こちらは予約注文をに印刷したいと思っています。
フォームのコードは次のようになります。だから、
namespace BinaryTree
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private BinarySearchTree<int> _tree;
void PaintTree()
{
if (_tree == null) return;
pictureBox1.Image = _tree.Draw();
}
private void btnCreate_Click(object sender, EventArgs e)
{
try
{
_tree = new BinarySearchTree<int>(new BinarySearchTreeNode<int>(int.MinValue));
PaintTree();
}
catch(NotImplementedException) { MessageBox.Show("There is no implementation!"); }
}
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
var val = int.Parse(inputTextBox.Text); //makes a variable out of the input value from the user, to work with
if (_tree == null)
btnCreate_Click(btnCreate, new EventArgs());
_tree.Insert(val); //***calls the "Insert" method from the BST class, to insert the value to the tree
PaintTree(); //shows the user the tree
//**this is [I guess] where I need code for printing the tree in Preorder**
PreorderLabel.Text = ???????
inputTextBox.SelectAll();
this.Update();
}
catch (Exception exp) { MessageBox.Show(exp.Message); }
}
、ユーザーが[追加]ボタン(btnAdd)、唯一のInsertメソッドがツリー「_tree」によって呼び出されなければならないではない、とPaintTree方法をクリックして木を見せるために呼ばれる。 Preorderメソッドを呼び出すと"PreorderLabel"というラベルのPreorderをに印刷します。
これはどのように行われますか?
私はすべての助けを喜ぶでしょう!
プリオーダートラバーサルメソッドコードが最初のコード貼り付けに表示されますか?または? – mbksr
これは主に、**ラベル**の**印刷**が意味することが明確でないため、超簡単な質問*ではありません。ラベルはちょうど静的なテキストですが、本当に**印刷**したいですか? –
申し訳ありません。私は、 "label.Text"をユーザが値を追加するたびにpreorderでTreeノードの文字列に変更するようなことを考えています。それはそこに印刷したいものです。 – mbksr