我正在尝试做一个小程序,它需要一个搜索二叉树。
计算每个节点:
该程序应具有输出:
问题是该函数必须具有线性复杂度,并且我不能使她小于n ^ 2.
有人可以帮帮我吗?答案 0 :(得分:0)
基本上你需要计算子树中的键的总和。这是一个众所周知的问题。
func calc(node):
if node is null:
return 0
node.lval = calc(node.left) # L(u)
node.rval = calc(node.right) # R(u)
return node.key + node.lval + node.rval
首先将lval
和rval
初始化为0。
现在你必须沿着树走(首先是左边,而不是右边)并检查条件。
func print(node):
if has left child:
print(node.left)
if node.lval*k < node.rval:
output node.key
if has right child:
print(node.right)