求二叉樹葉子節點的個數 && 求第K層的節點個數
阿新 • • 發佈:2018-12-31
求二叉樹葉子節點的個數
思路:
1.如果根節點為NULL時,則是空樹,返回0;
2.根節點不為空時,如果根節點的左右子樹均為空,則該二叉樹中只有一個節點,即返回1;
3.葉子節點的個數=左子樹葉子節點數+右子樹葉子節點數;
int _GetNodeyezi(Node* root) //葉子節點的個數 { if (root == NULL) { return 0; } if ((root->_left == NULL) && (root->_right == NULL)) { return 1; } return _GetNodeyezi(root->_left) + _GetNodeyezi(root->_right); //左子樹葉子節點+右子樹葉子節點 }
求第K層的節點個數
思路:
1.根節點為空或者K<=0時,返回0;
2.根節點不為空時,K==1時,返回1個,第一層最多隻有一個節點;
3.第K層節點數: 找到第K層,遞迴得到該層節點數;每次K-1,直到第K層時,K剛好為0,即遞迴結束
int _GetNodeK(Node* root, size_t k) //第K層節點個數 { if (root == NULL || k <= 0) { return 0; } if (root != NULL && k == 1) { return 1; } return _GetNodeK(root->_left, k - 1) + _GetNodeK(root->_right, k - 1); }