#include<stdio.h> #include<math.h> int Bdepth(BiTree b) { //求二叉树的高度 int ldepth,rdepth; if(b==NULL) return 0; ldepth = Bdepth(b->lchild); rdepth = Bdepth(b->rchild); return (ldepth>rdepth)?(ldepth+1):(rdepth+1); } int Bignodes(BiTree b,Elemtype x) {//求二叉树b中所有大于x结点的值的个数 int num1,num2,num=0; if(b==NULL) return 0; num1 = Bignodes(b->lchild,x); num2 = Bignodes(p->rchild,x); num += num1+num2; if(b->data>x) //if(b->data<x)变成求小于x结点值的个数 num++; return num; } /*统计二叉树中第k层结点的个数 思想:采用先序遍历的递归算法,num初值为0,若当前访问结点b是第k层上的叶子节点 则num++,再求出左右子树第k层上的叶子节点个数num1,num2,最后返回num1+num2*/ int Lnodes(BiTree b,int h,int k,int n