当前位置: 首页 > 知识库问答 >
问题:

如何实现在C中打印树的所有路径的函数?

谢璞
2023-03-14

我试图编写一个函数,打印从根节点到叶节点的所有路径。

  • 按从根到叶的顺序打印节点

例如

printPaths(bt1);
>2_1_
>2_3_

对于此示例,2是根,1-3是叶。

这是我的简单代码,我找不到新行应该在哪里,因为当我在任何地方写printf(“\n”)时,它打印出疯狂的输出,所以我在这段代码中找不到问题。

void printPaths(TreeNode* root) {

    if(root != NULL) {
        printf("%d ", root->val);
        printPaths(root->left);
        printPaths(root->right);
    }

}

共有1个答案

牛昱
2023-03-14

您需要在“每条路径的终点”处换行,因此当您到达一片叶子时:

if (root->left == NULL && root->right == NULL)
    printf("\n");

但是,您将无法使用代码再次打印整个路径,您需要在访问树时跟踪路径,并在到达叶子时打印路径:

void printPaths(TreeNode* root, int path[], int len)
{
  if (root == NULL) // if the root is NULL, do not print anything
    return;

  path[len++] = root->val; // add root to your path

  if (root->left == NULL && root->right == NULL) // we reached a leaf
    printPath(path, len); // print the path we followed to reach this leaf
  else
  {
    printPaths(root->left, path, len);
    printPaths(root->right, path, len);
  }
}

void printPath(int path[], int len)
{
  for (int i = 0; i < len; i++)
    printf("%d ", path[i]);
  printf("\n");
}
 类似资料:
  • 本文向大家介绍Java实现打印二叉树所有路径的方法,包括了Java实现打印二叉树所有路径的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java实现打印二叉树所有路径的方法。分享给大家供大家参考,具体如下: 问题: 给一个二叉树,把所有的路径都打印出来。 比如,对于下面这个二叉树,它所有的路径为: 8 -> 3 -> 1 8 -> 2 -> 6 -> 4 8 -> 3 -> 6 ->

  • 我试图打印二叉树的所有路径(根到叶的路径),但没有效果。 我的策略是使用递归,基本情况是树为None或树节点为leaf return,否则,遍历树的左侧和右侧。 但我找不到同时保留左右树的方法。

  • 问题内容: 我试图使用Java在二叉树中打印所有根到叶的路径。 在主要方法中: 但是它给出了错误的输出。 给定的树: 预期产量: [5,1,3] [5、8、6] [5、8、9] 但是输出产生了: [5,1,3] [5、1、3、8、6] [5、1、3、8、6、9] 可以找出一个… 问题答案: 用以下方法调用递归方法: 传递时会发生什么(而不是在所有方法调用中使用单个对象,这意味着,当您返回原始调用者

  • 以下是一个采访问题。 您将获得一个二叉树(不一定是BST),其中每个节点都包含一个值。设计一个算法来打印所有总计为该值的路径。注意,它可以是树中的任何路径-它不必从根开始。 虽然我能够找到树中从根开始的所有路径都有给定的总和,但对于不是从根开始的路径,我无法这样做。

  • 那么,如何打印树中的所有路径呢。这里的条件是,我们不仅需要从根开始的路径或子树中的路径。 例如: 因此程序应该返回: 一种方法是在每个不同的节点对之间找到LCA,然后打印从LCA到两个节点的路径(在左子树中反转,在右子树中按顺序排列)。但是这里的复杂性是O(n3)。有更有效的解决方案吗?

  • 问题内容: 我在测试类中使用以下代码,以将所有spring.xml文件加载到classpath和application-content.xml文件中。 有没有一种方法可以打印classpath中所有“ spring.xml”文件的路径?我有一些jar文件,其中包含spring.xml。但是,其中一些可能不需要运行测试。有没有办法打印它们(jar文件或路径)并删除程序上不需要的spring.xml文