gpt4 book ai didi

C# 二叉树的 - Inorder/Preorder 和 PostOrder(递归帮助)

转载 作者:太空狗 更新时间:2023-10-29 23:17:11 25 4
gpt4 key购买 nike

我需要一些递归方面的帮助。我正在尝试在 C# 中做一个二叉树,我想知道是否可以使用递归函数演示所有 Inorder/PostOrder 和 PreOrder 遍历。

我已经为 PreOrder 完成了它,然后尝试了 InOrder 但是导致了 StackOverflow 异常,我对二叉树的理解充其量是脆弱的所以任何帮助都会非常感激,即使它看起来像一个愚蠢的问题。

以下代码是我用于 PreOrder Traversal 的代码;

     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("");
}

提前致谢,这绝对是我无法理解的事情,我什至不确定是否可能。

最佳答案

Inorder 与您已有的非常相似,只需将您的代码在您处理当前节点的位置稍微移动一下即可:

public void recursiveInorder(BinaryTreeNode root)
{
if (root.Left != null)
{
recursiveInorder(root.Left);
}
Console.Write(root.Data.ToString());
if (root.Right != null)
{
recursiveInorder(root.Right);
}
}

与preorder的区别在于先遍历左子树,然后处理当前节点,最后遍历右子树。

关于C# 二叉树的 - Inorder/Preorder 和 PostOrder(递归帮助),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com