我需要一些关于递归的帮助。我正在尝试在C#中创建一个二叉树,想知道是否可能使用递归函数演示所有的中序/后序和前序遍历。
我已经完成了前序遍历,并尝试进行中序遍历,但导致堆栈溢出异常,我的二叉树理解力最多只能算得上薄弱,所以任何帮助都将不胜感激,即使它看起来像是一个愚蠢的问题。
以下是我用于前序遍历的代码:
我已经完成了前序遍历,并尝试进行中序遍历,但导致堆栈溢出异常,我的二叉树理解力最多只能算得上薄弱,所以任何帮助都将不胜感激,即使它看起来像是一个愚蠢的问题。
以下是我用于前序遍历的代码:
public void recursivePreorder(BinaryTreeNode root)
{
Console.Write(root.Data.ToString());
if (root.Left != null)
{
recursivePreorder(root.Left);
}
if (root.Right != null)
{
recursivePreorder(root.Right);
}
}
public void preorderTraversal()
{
if (Root != null)
{
recursivePreorder(Root);
}
else
{
Console.WriteLine("There is no tree to process");
}
static void Main(string[] args)
{
// Build the tree
Test.Add(5);
Test.Add(2);
Test.Add(1);
Test.Add(3);
Test.Add(3); // Duplicates are OK
Test.Add(4);
Test.Add(6);
Test.Add(10);
Test.Add(7);
Test.Add(8);
Test.Add(9);
// Test if we can find values in the tree
for (int Lp = 1; Lp <= 10; Lp++)
Console.WriteLine("Find Student ID ({0}) = {1}", Lp, Test.Find(Lp));
// Test if we can find a non-existing value
Console.WriteLine("Find Student ID (999) = {0}", Test.Find(999));
// Iterate over all members in the tree -- values are returned in sorted order
foreach (int value in Test)
{
Console.WriteLine("Value: {0}", value);
}
Console.WriteLine("Preorder Traversal");
Console.WriteLine("");
Test.preorderTraversal();
Console.WriteLine("");
}
非常感谢您的帮助,这绝对是我难以理解的事情之一,甚至我不确定它是否可能实现。
Console.Write
语句呢?还要查看下面@Mitch链接的维基百科文章。 - BrokenGlass