解法:
由题意,根据二叉树求对应的合法普通树的度,度就是节点儿子数的最大值。
也就是左孩子+兄弟
在二叉树中就是某根节点的右孩子+某根节点的右孩子的右孩子+。。。
例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;
}