通过递归找到树中从节点到根的所有父代

CSI

我有一个Graph类,对Tree进行建模。图包含一个指向Graph*我当前实例(我当前节点)的父级的指针

class Graph
{
private:

    Graph* parent;
public:
    Graph* getparent();
}

Graph* Graph::getparent()
{
    return this->parent;
}

父母在nullptr如果根。

我正在尝试查找从节点到根的距离。

这是我的尝试:

int Graph::howManyParents(Graph* unparent)
{
    int nbParents(0);
    if(unparent != nullptr)
    {
        nbParents++;
        nbParents =+ howManyParents(this->parent);
    }
    return nbParents;
}

它可以编译但崩溃。调试器向我展示了对该方法的大量调用,但最终出现了SegFaulting。我的算法有问题吗?

莫尔布德尼洛

除非您将根传递给您,否则您的递归永远不会停止,因为您总是在调用this->howManyParents并因此将其传递给同一个父节点,而父节点不会变为null。

目前尚不清楚您是想要距参数的距离还是距的距离this

查找到给定节点的距离(没有理由成为一个成员):

int howManyParents(Graph* unparent)
{
    int nbParents(0);
    if(unparent != nullptr)
    {
        nbParents = howManyParents(unparent->getparent()) + 1;
    }
    return nbParents;
}

找出与的距离this

int Graph::howManyParents()
{
    int nbParents(0);
    if(parent != nullptr)
    {
        nbParents = parent->howManyParents() + 1;
    }
    return nbParents;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

遍历递归定义的树中的所有节点

从节点到根遍历树,并跟踪路径

打印从根节点到叶节点的所有路径-javascript

Prolog:找到从根树节点到指定节点的路径

Java从树中找到具有递归功能的节点

在Python中递归求和并打印树中的所有节点名称和值

如何递归地找到序列树的所有可能组合?

通过指针从 kd 树中递归打印节点

如何在层次树中找到所有子节点

通过递归以根到子方式在节点单击上更新树

如何从python字典中找到到特定节点到叶子节点以及前面节点的所有路径?

方案递归地找到树的最左节点

检查二叉树的根中是否存储的数目大于所有子节点中的数目的函数

如何获取jtree中根节点的所有子节点?

列表在python中通过递归仍然存在的问题;在图上找到所有可能的路线

在按顺序存储在数组中的二叉树中找到根节点

这个简单的递归函数在树中找到节点有什么问题?

结合节点到根的“树遍历”到底是什么抽象?

如何构建一棵树然后遍历每片叶子(每次从根节点到叶子)?

在SQL中返回树中的所有节点

如何通过使用JS在HTML中获取tagName的所有父代?

递归地找到二叉搜索树中每个节点的总深度?

B树中根节点的子树数

没有明确根节点的CTE递归

给定一棵二叉树,找到所有从根到叶的路径

从图中的一个节点到所有其他节点的最短路径是否形成一棵树?

遍历树C#中的所有叶节点

对Python中n元树的所有节点求和

如何在jstree中获取选定节点的完整路径?(从根节点到选定节点)