如何解决递归如何在树中工作?
我正在遍历一棵树,想知道递归在树内如何工作,因为代码看起来很简单,但是当我调试代码时,我感到困惑,因为我对递归的工作,那么您可以解释一下吗?在c#中查看我的代码
public static void Traverse(Node root)
{
if (root == null) return;
Console.WriteLine(root.data);
Traverse(root.left);
Traverse(root.right);
}
解决方法
当我尝试解决二叉树的问题时,我发现它有助于准确跟踪特定节点的输入和存在时间(何时将其推入调用栈并从调用栈中弹出)。这类似于Lasse V. Karlsen的建议,但直接在代码中完成。您将用于任务的任何其他代码(例如交换左右子节点,收集所有访问的节点的总和等)都必须在两个日志之间进行,并且可能应该有自己的日志,以便您可以看到在可能发生错误的确切节点上。例如:
static ArrayList results = new ArrayList();
public static void Traverse(Node root)
{
if (root == null)
return;
Console.WriteLine("Entering",root.data);
results.Add(root.data);
Console.Write("Current Results: ");
foreach(int i in results) {
Console.Write(i + " ");
}
Console.WriteLine("");
Traverse(root.left);
Traverse(root.right);
Console.WriteLine("Exiting",root.data);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。