如何在二叉树中找到对象的最大大小?

时间:2014-04-17 16:05:45

标签: c tree find size binary-tree

我有一个带有以下足迹的二叉树数据结构。我在用C. Node是一个包含

的结构
Node* left

Node* right

int key;

VECTOR data;

树由键平衡(例如,当前节点的左侧节点具有较低的键值),而不是数据。我想找到具有最大向量的节点。有一个函数get_size(data),但我不知道如何递归调用函数来获得整个树中的最大向量大小。

2 个答案:

答案 0 :(得分:0)

我会按照

的方式尝试
int find_max_data_size( Node * p ) {

  if( !p ) return 0;

  int const left_size = find_max_data_size( p->left );
  int const right_size = find_max_data_size( p->right );
  int const my_size = get_size( p->data );

  return max( left_size, right_size, my_size );
}

并致电find_max_data_size( root );

答案 1 :(得分:0)

void walk(NODE_T *I__node, size_t *maxVectorSize) 
   {   
   if(I__node) 
      {
      size_t dataSize;

      dataSize = get_size(I__node->data, maxVectorSize);
      if(dataSize > *maxVectorSize)
         *maxVectorSize = dataSize;

      walk(I__node->left, maxVectorSize);
      walk(I__node->right, maxVectorSize);
      }

   return;
   }