數據結構–樹與二叉樹–編程求以孩子兄弟表示法存儲的森林的葉結點個數
題目
編程求以孩子兄弟表示法存儲的森林的葉結點個數
ps:題目來源2025王道數據結構
思路
樹上的操作大多數是通過遞歸進行的
我們可以從根節點開始遞歸
如果結點 N
沒有孩子指針,N
一定是葉子結點,找到一個,葉結點個數 +1
,查找 N
兄弟指針是否可以帶來答案。
否則,查找 N
的孩子指針 與 兄弟指針是否可以帶來答案。
代碼實現
#include <iostream>
using namespace std;
typedef struct CSNode{int data;struct CSNode *fcd, *fbod;
}CSNode, *CSTree;
int GetLeaves(CSTree Tree)
{if (Tree == NULL) return 0;else if (Tree->fcd == NULL) return 1 + GetLeaves(Tree->fbod);else return GetLeaves(Tree->fbod) + GetLeaves(Tree->fcd);
}
int main()
{CSTree Tree;//給 Tree 賦值操作 //... ... int num = GetLeaves(Tree);cout << num;
}