按贪婪算法思路:从树中选择树中值最大的的分支走,依些类推,计算结果为14=4+7+3
function newTree(data)
local t = {}
t.data = data
t.treeList = {}
return t
end
function addTree(root, tree)
local treeList = root.treeList
treeList[#treeList+1] = tree
end
function getMaxGreedy(tree)
local num = tree.data
local treeList = tree.treeList
local function sort(tree1, tree2)
return tree1.data > tree2.data
end
table.sort(treeList, sort)
if #treeList > 0 then
local v = 0
if #treeList > 0 then
v = getMaxGreedy(treeList[1])
else
v = t.data
end
num = num + v
end
return num
end
local t1 = newTree(1)
local t2 = newTree(2)
local t3 = newTree(3)
local t4 = newTree(4)
local t5 = newTree(5)
local t6 = newTree(6)
local t7 = newTree(7)
local t8 = newTree(8)
local t9 = newTree(9)
local t10 = newTree(10)
local root = newTree(4)
addTree(t4, t9)
addTree(t4, t6)
addTree(t2, t10)
addTree(t2, t1)
addTree(t5, t4)
addTree(t5, t8)
addTree(t7, t3)
addTree(t7, t2)
addTree(root, t5)
addTree(root, t7)
print(getMaxGreedy(root))