c#-简单二叉树
所以,在过去的一个月里,我一直在学习C#,而现在我正在努力学习二叉树 我的问题是,如何才能将我的树调用到控制台窗口? 我试过c#-简单二叉树,c#,binary-tree,C#,Binary Tree,所以,在过去的一个月里,我一直在学习C#,而现在我正在努力学习二叉树 我的问题是,如何才能将我的树调用到控制台窗口? 我试过Console.WriteLine(tree.Data)但这似乎会将54写入我的控制台窗口 如果您需要查看,请查看我的代码: 主文件 static void Main(string[] args) { //Creating the Nodes for the Tree Node<int> tree = new Node<int>('6
Console.WriteLine(tree.Data)代码>但这似乎会将54写入我的控制台窗口
如果您需要查看,请查看我的代码:
主文件
static void Main(string[] args)
{
//Creating the Nodes for the Tree
Node<int> tree = new Node<int>('6');
tree.Left = new Node<int>('2');
tree.Right = new Node<int>('5');
Console.WriteLine("Binary Tree Display");
Console.WriteLine(tree.Data);
Console.ReadLine();
}
static void Main(字符串[]args)
{
//为树创建节点
节点树=新节点('6');
tree.Left=新节点('2');
tree.Right=新节点('5');
Console.WriteLine(“二叉树显示”);
Console.WriteLine(tree.Data);
Console.ReadLine();
}
节点类
class Node<T> where T : IComparable
{
private T data;
public Node<T> Left, Right;
public Node(T item)
{
data = item;
Left = null;
Right = null;
}
public T Data
{
set { data = value; }
get { return data; }
}
}
类节点,其中T:IComparable
{
私有T数据;
公共节点左、右;
公共节点(T项)
{
数据=项目;
左=空;
右=空;
}
公共T数据
{
设置{data=value;}
获取{返回数据;}
}
}
还有其他方法调用我的树吗?还是我做错了什么?我认为最好的方法是实现一个简洁的递归树遍历算法,它按照您选择遇到的特定顺序打印出每个节点的值。至于在C#Library中有一种预先编写的方法来实现这一点,我不知道。祝你好运 之所以只显示54
,是因为这就是(int)'6'
的含义
您正在调用tree.Data
,它在本例中返回'6'
转换为int
我想您要做的是返回6
,您可以使用
new Node<char>('6');
新节点('6');
或者
new Node<int>(6);
新节点(6);
()节点树=新节点(6);
6,而不是“6”。现在将打印期望值。您的代码以静默方式将字符值“6”强制转换为整数,结果为54。()
如果您试图返回节点的所有数据
我认为更好的方法是重写节点
类中的ToString
方法,如下所示:
public override string ToString()
{
var leftString = this.Left != null ? this.Left.ToString() : "null";
var rightString = this.Right != null ? this.Right.ToString() : "null";
var dataString = this.Data != null ? this.Data.ToString() : "null";
leftString = String.Join("\n", leftString.Split('\n').Select(a => "\t" + a));
rightString = String.Join("\n", rightString.Split('\n').Select(a => "\t" + a));
return String.Format("\nData: {0}\n"
+ "Left: {1}\n"
+ "Right: {2}",
dataString, leftString, rightString);
}
然后调用Console.WriteLine(tree.ToString())代码>结果如下:
Data: 54
Left:
Data: 50
Left: null
Right: null
Right:
Data: 53
Left: null
Right: null
这并不是最漂亮的实现,但我认为证明了这一点
要获得更漂亮的实现,请参见[待续..]听起来更好:)@lazyberezovsky:更令人激动!为了澄清下面的答案,您正在转换通过使用带撇号的文字'6'
创建的char
类型。char
类型被隐式转换为等效的int
值,其中整数值“54”表示字符6
。看见
Data: 54
Left:
Data: 50
Left: null
Right: null
Right:
Data: 53
Left: null
Right: null