我通过php从数据库获取数据,并通过以下方式将php-array转换为javascript:
var dbarrayjs = <?php echo json_encode($dbarrayphp);?>;
这样js输出一个对象,其中我的数据库的每个记录都是一个对象本身。记录(我的数据库的一行)由2个字符串组成。 其中一个字符串是一个数字列表,用&#34;分隔,&#34;并需要通过string.split更改为数组。另一个字符串是一个简单的数字。 这意味着描述树状系统的前身。单个数字字符串是一个节点,多位数字符串包含其所有直接父节点。一个特殊标准是,所有父母都需要通过才能确认孩子。
我需要一种遍历此系统的方法,并检查我是否可以访问此树中的每个元素,或者是否有一个因前一个选择不好而无法访问的元素。一个简单的例子是这样的:
编辑:2017年3月21日 - 我正在寻找一种topsort算法,当时并不知道。
答案 0 :(得分:1)
这是图论中的基本算法。你有一个有向图:连接只在一个方向上进行。如果您有一个给定的根节点,则搜索相当简单:对根树进行完全遍历(深度优先或breadth-first)。然后看看你是否已经击中了所有节点。
您的问题描述有点模糊:您是否只需检测是否缺少节点?你需要识别它吗?确实,只有一个丢失的节点可能吗?根据这些细节,您的实施的会计可能需要做更多的工作。
例如,如果你要做的就是检测是否有任何丢失的节点,只需在搜索时访问节点即可对其进行计数。如果最终计数小于数据库中的节点数,那么您将丢失一些。
如果必须识别缺失的节点,则必须跟踪您访问过的节点。然后,您需要另一个代码块来提取图表的所有节点,报告那些不在“已访问”列表中的节点。