哪个是用C语言实现N-ary树的巧妙实现?
特别是,我想实现一个n-ary树,而不是自我平衡,每个节点中有一个未绑定数量的子节点,其中每个节点都包含一个已定义的结构,例如:
struct task {
char command[MAX_LENGTH];
int required_time;
};
Run Code Online (Sandbox Code Playgroud) 我的方法可能完全偏离正轨,但在解决这个问题的过程中,我试图得到一个数字0-9的所有排列的列表.
我正在寻找使用像这样的n-ary树来解决它:
type Node =
| Branch of (int * Node list)
| Leaf of int
Run Code Online (Sandbox Code Playgroud)
我对自己很满意,因为我已经设法弄清楚如何生成我想要的树.
我现在的问题是我无法弄清楚如何遍历这个树并将每个叶子的'path'作为int提取出来.令我困惑的事情是我需要匹配单个节点,但我的"外部"功能需要采用节点列表.
我当前的尝试几乎做了正确的事情,除了它返回我所有路径的总和......
let test = Branch(3, [Branch(2, [Leaf(1)]);Branch(1, [Leaf(2)])])
let rec visitor lst acc =
let inner n =
match n with
| Leaf(h) -> acc * 10 + h
| Branch(h, t) -> visitor t (acc * 10 + h)
List.map inner lst |> List.sum
visitor [test] 0 //-> gives 633 (which is 321 + 312)
Run Code Online (Sandbox Code Playgroud)
我甚至不确定这是尾递归. …
我正在开发一个webapp,需要动态绘制有根的n-ary树,以绘制技能之间的先决条件关系.它实际上已经这样做了,你可以在这里看到一个例子.我试图改进它,使用PyMag中列出的算法,我必须承认,我有点迷失,试图找出如何使其适应我的JavaScript代码.
编辑:这是我目前用于绘制这些树的代码,来自Rails ERB部分(我会在这里粘贴代码,但它有点冗长).
对于那些检查我的代码的人来说,gon.skills_map
是这种格式的数组:
我正在编写Ruby脚本,并希望使用n-ary树数据结构.
是否有一个很好的实现可用作源代码?谢谢.
这伤害了我的大脑!
我想在树结构上进行递归,并将与某个过滤器匹配的所有实例收集到一个列表中.
这是一个示例树结构
type Tree =
| Node of int * Tree list
Run Code Online (Sandbox Code Playgroud)
这是一个测试样本树:
let test =
Node((1,
[Node(2,
[Node(3,[]);
Node(3,[])]);
Node(3,[])]))
Run Code Online (Sandbox Code Playgroud)
使用和int值为3的节点收集和过滤应该为您提供如下输出:
[Node(3,[]);Node(3,[]);Node(3,[])]
Run Code Online (Sandbox Code Playgroud) 我的工作,我从文件中读取连接站的列表,并在格式创建一个HashMap(键=字符串站,值= ArrayList的连接站)到目前为止好一门功课的项目.
然后,用户可以选择本地站,此时我正在尝试创建树以表示来自家中的所有可访问站.树可以看起来像:
HomeStation
/ \
station1 station2
/ | \
station3 station4 station 5
Run Code Online (Sandbox Code Playgroud)
但我无法理解如何将这些站点添加到树以外的根和它的子节点之外.所以任何人都可以给我一些关于我应该做什么/看什么的指示.
到目前为止我的TreeNode类:
/**
* TreeNode class
* Represents a N-ary tree node
* Uses ArrayList to hold the children.
* @author Ásta B. Hansen (11038973)
*
*/
public class TreeNode {
private String station;
private TreeNode parent;
private List<TreeNode> children;
/**
* Constructor
* @param station - the station to be stored in the node
*/
public TreeNode(String station) {
this.station = station;
parent = …
Run Code Online (Sandbox Code Playgroud)