gpt4 book ai didi

ruby - 干掉这段 Ruby 代码

转载 作者:太空宇宙 更新时间:2023-11-03 17:31:25 25 4
gpt4 key购买 nike

我怎样才能干掉这段代码?

module TraverseTree
def inorder_traverse root
return nil unless root
result = []
result.concat inorder_traverse root.left if root.left
result.push root.val
result.concat inorder_traverse root.right if root.right
result
end

def preorder_traverse root
return nil unless root
result = []
result.push root.val
result.concat preorder_traverse root.left if root.left
result.concat preorder_traverse root.right if root.right
result
end

def postorder_traverse root
return nil unless root
result = []
result.concat postorder_traverse root.left if root.left
result.concat postorder_traverse root.right if root.right
result.push root.val
result
end
end

有没有一种好方法可以根据函数名称以编程方式对代码进行排序?

谢谢!!

最佳答案

def traverse_recurse(root, options)
return unless root
options[:preorder].call(root.val) if options[:preorder]
traverse_recurse(root.left, options)
options[:inorder].call(root.val) if options[:inorder]
traverse_recurse(root.right, options)
options[:postorder].call(root.val) if options[:postorder]
end

def traverse_collect(root, type)
result = []
traverse_recurse(root, type => lambda { |val| result.push(val) })
result
end

def preorder_traverse(root)
traverse_collect(root, :preorder)
end

def inorder_traverse(root)
traverse_collect(root, :inorder)
end

def postorder_traverse(root)
traverse_collect(root, :postorder)
end

关于ruby - 干掉这段 Ruby 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35237309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com