【发布时间】:2016-12-31 20:09:41
【问题描述】:
我正在用 Ruby 解决这个问题,并且我使用了修改后的 DFS 算法来解决这个问题。这个想法是,每次 DFS 必须查看相邻节点时,它都会查看子节点,因此这是一个新级别,记录在下面的哈希中。
这个实施/思考过程是否正确?关于这一点,我检查自己的实现而不为输入创建不同的二叉树的有效方法是什么?
#Given a binary tree, design an algorithm which creates a linked list of all the nodes at each depth.
#(e.g if you have a tree with depth D, you'll have D linked lists).
#Space: O(N)
#Time: O(N)
def linked_list_hash(head)
level_hash = {}
level_hash[1] = LinkedList.new(head)
dfs(head, level_hash)
level_hash
end
def dfs(node, level_hash)
new_level = level_hash.keys.last+1
level_hash[new_level] = LinkedList.new
adj(node).each do |child|
level_hash[new_level].insert(child)
dfs(child, level_hash)
end
end
private
def adj(node)
[node.left, node.right]
end
【问题讨论】:
标签: ruby algorithm data-structures linked-list graph-algorithm