- 已知一棵非空二叉树结点的数据域为不等于0的整数,请编写程序找出该二叉树中叶结点数据值之和最大的层。
- 输入为一组用空格间隔的整数,个数不超过100个,表示带空指针信息的二叉树先根序列。
- 输出为一个整数,表示叶结点数据值之和最大的层,如果存在多个满足条件的层,则输出最下面一层。
1 2 0 0 3 0 0输出样例1:
1输入样例2:
1 -2 0 0 3 -1 0 0 -1 0 0输出样例2:
2
AC:
#includeusing namespace std; int b[100] = {0}; typedef struct BiTreeNode { int data; struct BiTreeNode *lchild, *rchild; } BiTreeNode, *linkBiTreeNode; linkBiTreeNode CreateBiTree1() { int Data; linkBiTreeNode node; scanf("%d", &Data); if (Data == 0) { node = NULL; } else { node = (linkBiTreeNode)malloc(sizeof(BiTreeNode)); node->data = Data; node->lchild = CreateBiTree1(); node->rchild = CreateBiTree1(); } return node; } int sum = 0; int x = 1; void P(linkBiTreeNode BT) { if (BT) { if (BT->lchild == NULL && BT->rchild == NULL) b[x] += BT->data; P(BT->lchild); P(BT->rchild); if (BT->lchild != NULL && BT->rchild != NULL) x++; } return; } int compare(int *a, int k) { int i, j, temp = a[0], l = 0; for (j = 1; j < k; j++) { if (temp <= a[j]) { temp = a[j]; l = j; } } return l; } int main() { std::ios_base::sync_with_stdio(false); linkBiTreeNode T = NULL; T = CreateBiTree1(); P(T); int l = compare(b, x); cout << l << endl; return 0; }
- 强调下 return 和 return 0 的区别;
- 1、退出方式不同
return 0表示程序正常退出,return 0表示程序异常退出,return 语句可以用来返回变量或指针中的值,也可以用来返回0,表示返回为空,返回一个代数值,通常在子函数的末尾。
- 2.不同的含义
return 0表示函数的正常结束,return 0表示函数异常终止,被调用的函数 return 1只是向主函数提供一个标志,指示执行遇到异常,然后返回主函数进行处理,继续执行。
- 3.布尔类型返回不同
return 0:返回false的权利,return 0:true;通常这样的函数用于实现一个逻辑,以确定是否有数据,或检查是否有数据。



