[英]How does this function compute the number of nodes in binary tree
從語義上講,它需要左節點數+ 1(當前節點)+右節點數。
與func_1(x)的意思是在該特定節點上調用該函數。
所以完整的計算是
遞歸經常使用此原理:
看一下葉子節點7。
當使用節點7的值調用func_1
,if語句將分支到else部分,因為指向該節點的指針有效。
然后, func_1
將被調用兩次,一次是左孩子,一次是右孩子。 在這兩種情況下,函數都返回0,因為左,右子級均為NULL。 該函數將返回1:
return func_1(node->left) + 1 + func_1(node->right);
相當於:
return func_1(NULL) + 1 + func_1(NULL);
變成:
return 0 + 1 + 0;
看這句話
return func_1(node->left) + 1 + func_1(node->right);
^^^^^
如果一個節點不等於NULL,它將對其自身進行計數,再加上相對於此節點的左右子樹中的節點數。
因此,您將獲得等於不等於NULL的節點數的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.