Flutter Dart:N元树实现

Flutter Dart:N元树实现,flutter,dart,tree,n-ary-tree,Flutter,Dart,Tree,N Ary Tree,我有一个大学项目,需要在dart中实现一个N元树 到目前为止,这是我的节点 class Node { Node parent; // parent of the current node List<Node> children; // children of the current node int id; String actualMessage; Node (int id, String actualMessage){

我有一个大学项目,需要在dart中实现一个N元树

到目前为止,这是我的节点

class Node {

    Node parent; // parent of the current node
    List<Node> children; // children of the current node
    int id;
    String actualMessage;

    Node (int id, String actualMessage){
        this.id=id;
        this.actualMessage=actualMessage; 
        children  = new List<Node>();
    }
}
类节点{
节点父节点;//当前节点的父节点
列出子节点;//当前节点的子节点
int-id;
字符串实际消息;
节点(int-id,字符串实际消息){
这个.id=id;
this.actualMessage=实际消息;
children=新列表();
}
}
我一直在思考如何实现以下方法。我将尝试用下面的例子来解释我需要什么

A是根,有3个子项:B、C和D。B有2个子项:E和F。E有1个子项:G

  • 如何将根/父节点/子节点添加到树=>如何添加a、B和E
  • 如何从树中删除节点。=>如何删除B。它也应该删除其子项
  • 当父项作为参数传递时,如何检索父项和所有可能的子项的“actualMessage”(在单个级别上)=>如何获取子项上的实际消息?方法也应该返回B、C和D上的实际消息
  • 如何从最长路径中检索节点数=>最长路径中的节点数是从根节点到最后一个节点的路径。我的情况是4
  • 如何在任何到达根节点的节点上检索节点数和树的所有父节点的列表。=>G中的节点数为4,G中所有父节点的列表为E、B和A
  • 任何代码或信息如何做上述将不胜感激。这是我第三天被困在同一件事上


    谢谢你

    哇,你要的东西真多:p

    我已经试过了前两个要求,下面的代码可以帮助您满足它们

    Node root = new Node(0, "A"); // Your root node
    
    我将在树上显示预顺序遍历的结果

  • 添加新节点:
  • 运行后:

    Node b = new Node(1, "B");
    addNode(root, b);
    
    Node e = new Node(2, "E");
    addNode(b, e);
    
    预顺序遍历结果:

    Visited Node A
    Visiting child:
    Visited Node B
    Visiting child:
    Visited Node E
    
    Deleted Node B
    Visited Node A
    
    这与您的结构相符:D

  • 在删除节点(及其子节点)时,我使用“actualMessage”作为比较。根据您的实施情况,您可以使用您认为更好的工具:
  • 预顺序遍历结果:

    Visited Node A
    Visiting child:
    Visited Node B
    Visiting child:
    Visited Node E
    
    Deleted Node B
    Visited Node A
    
    同样,似乎工作正常:D

    我一有更多时间就会更新这个


    此问题不适用于本论坛,请遵循此处的指导原则-谢谢@Sidak的回答。我知道这太多了,对此我很抱歉。这很有帮助!希望您有时间更新您的答案。同时,我将此答案标记为接受此答案,因为它对第一部分有帮助。
    Deleted Node B
    Visited Node A