微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

递归如何在树中工作?

如何解决递归如何在树中工作?

我正在遍历一棵树,想知道递归在树内如何工作,因为代码看起来很简单,但是当我调试代码时,我感到困惑,因为我对递归的工作,那么您可以解释一下吗?在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 举报,一经查实,本站将立刻删除。