解法:
由题意,根据二叉树求对应的合法普通树的度,度就是节点儿子数的最大值。
也就是左孩子+兄弟
在二叉树中就是某根节点的右孩子+某根节点的右孩子的右孩子+。。。
例AB#CD##E###
关于树概念不理解的可以看看981: 统计利用二叉树存储的森林中树的棵数-CSDN博客
#include<iostream>
#include<queue>
using namespace std;
int mx = 0;
struct treeNode {
char val;
treeNode* left;
treeNode* right;
treeNode(char x) :val(x), left(nullptr), right(nullptr) {};
};
treeNode* buildTree() {
char c;
cin >> c;
if (c == '#') return nullptr;
treeNode* root = new treeNode(c);
root->left = buildTree();
root->right = buildTree();
return root;
}
int rdfs(treeNode* root) {
if (root == NULL) return 0;
return rdfs(root->right) + 1;
}
void dfs(treeNode* root) {
if (root == NULL) return;
dfs(root->left);
dfs(root->right);
mx = max(mx, rdfs(root));
return;
}
int main() {
treeNode* root = buildTree();
if (root->right) {
cout << "ERROR";
}
else {
dfs(root);
cout << mx;
}
return 0;
}