int goc_la(node *root,int a,int dai)
{
if(root==NULL)return 0;
else
{
if(a<root->info&&node_la(root)==0)
{
dai++;
goc_la(root->left,a,dai);
}
else if(root->info<a&&node_la(root)==0)
{
dai++;
goc_la(root->right,a,dai);
}
else
{
return dai;
}
}
}
//đã có 1 mảng tạo từ các node lá theo cách duyệt LNR
int tong_dai(node *root,int a[],int n)
{
int s=0;
for(int i=0;i<n;i++)
{
int dai=goc_la(root,a[i],0);//chạy từ gốc nên chiều dài từ gốc sẽ là 0
s=s+dai;
}
return s/n;
}
đây là cách chạy tay của mình từ gốc đến node lá thứ 1
-8(gốc) - 65 -32 -49 -53(lá) độ dài của lá thứ 1 là 4
hàm đệ quy -8 -> if thoát hàm nhưng ko có trả về
hàm đệ quy -65 -> else if thoát hàm nhưng ko có trả về
hàm đệ quy -32 -> if thoát hàm nhưng ko có trả về
hàm đệ quy -49 -> if thoát hàm nhưng ko có trả về
hàm đệ quy -53 -> else thoát hàm -53 -> hàm -53 trả về là 4
mấy hàm trên nó ko có trả về thì làm sao mà máy nó biết dem=4 nó ra kết quả nhưng mình ko hiểu tại sao?