标签:stream 输出 struct 创建 code inpu color row ant
接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树)。
输出该用例对应的二叉树度为2的结点个数。
ABCD###EF##G##H##
3
知识点:
二叉树每个结点至多只有两棵子树,即二叉树中不存在大于2的结点
故所求二叉树度为2的结点,即既有左孩子也要有右孩子
void DegreeTwo(Tree *&tree) { if(tree!=NULL) { if(tree->lchild!=NULL&&tree->rchild!=NULL) //左右孩子均存在,该结点为二叉树度为2的结点 count++; if(tree->lchild!=NULL) DegreeTwo(tree->lchild); //当不满足左右孩子均存在,单独判断左孩子是否有它的左右孩子 if(tree->rchild!=NULL) DegreeTwo(tree->rchild); //右孩子同上 } }
完整代码:
#include<iostream> #include<malloc.h> using namespace std; int count=0; typedef struct node { char data; struct node *lchild,*rchild; }Tree; void CreateTree(Tree *&tree) { char ch; cin>>ch; if(ch==‘#‘) tree=NULL; else { tree=(Tree*)malloc(sizeof(Tree)); tree->data=ch; CreateTree(tree->lchild); CreateTree(tree->rchild); } } void DegreeTwo(Tree *&tree) { if(tree!=NULL) { if(tree->lchild!=NULL&&tree->rchild!=NULL) count++; if(tree->lchild!=NULL) DegreeTwo(tree->lchild); if(tree->rchild!=NULL) DegreeTwo(tree->rchild); } } int main() { Tree *tree; CreateTree(tree); DegreeTwo(tree); cout<<count; return 0; }
Swust OJ975: 统计利用先序遍历创建的二叉树的度为2的结点个数
标签:stream 输出 struct 创建 code inpu color row ant
原文地址:https://www.cnblogs.com/army613bts/p/12684806.html