数据结构–树与二叉树–编程求以孩子兄弟表示法存储的森林的叶结点个数
题目
编程求以孩子兄弟表示法存储的森林的叶结点个数
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;
}