返回所有非叶节点的总和,二叉树

时间:2015-04-29 03:54:09

标签: binary-tree pseudocode

二进制树可以使用三个函数进行编码: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

不太确定如何解决这个问题。我需要找到一种方法来访问所有非叶节点并添加节点的值。

1 个答案:

答案 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
相关问题