此计算垂直总和是我碰到其计算二叉树垂直和代码。由于该代码根本没有任何文档,我无法理解它是如何实际工作的,以及if(base == hd)的条件是什么? 需要帮助:)二叉树
void vertical_line(int base,int hd,struct node * node)
{
if(!node) return;
vertical_line(base-1,hd,node->left);
if(base==hd) cout<<node->data<<" ";
vertical_line(base+1,hd,node->right);
}
void vertical_sum(struct node * node)
{
int l=0,r=0;
struct node * temp=node;
while(temp->left){
--l;temp=temp->left;
}
temp=node;
while(temp->right){
++r;temp=temp->right;
}
for(int i=l;i<=r;i++)
{
cout<<endl<<"VERTICAL LINE "<<i-l+1<<" : ";
vertical_line(0,i,node);
}
}
http://stackoverflow.com/q/9646575/335858 – dasblinkenlight