二进制树可以使用三个函数进行编码:l, r and k
,以便节点n, l
(n)给出左边的n
子节点(如果没有,则为nil), r(n)
为n
提供正确的孩子(如果没有,则为零),k(n)
给出n
的关键值。
令TreeSum(l, r, x, k)
是简单的递归算法,它采用由l, r, and k
函数编码的二叉树和根x,并返回非叶节点处的键值之和。给出这个算法的伪代码。
但我觉得可能是这个?
TreeSum(l,r,x,k)
if(l(n) is a number)
x = k(l(n)) + x
return TreeSum(l,r,x,k)
else if ( node is a leaf or is not a number)
return nil
if(r(n) is a number)
x = k(r(n)) + x
return TreeSum(l,r,x,k)
else if ( node is a leaf or is not a number)
return nil
不太确定如何解决这个问题。我需要找到一种方法来访问所有非叶节点并添加节点的值。
答案 0 :(得分:0)
这可能有用......
TreeSum(L,R,X,k)的
if x == nil
k[x] = 0
else
sum = k[x] + TreeSum(l,r,l[x],k) + TreeSum(l,r,r[x],k)
return sum