typedefstructBiTNode {//二叉链表 int data; //数据域 structBiTNode *lchild;//左指针 structBiTNode *rchild;//右指针 } BiTNode, *BiTree; intgetNodeNum(BiTree &root){ //计算结点个数 if (root == NULL) return0; int left = getNodeNum(root->lchild); int right = getNodeNum(root->rchild); return left + right + 1; }
叶结点个数计算
只有当一个结点的左指针右指针指向 NULL 时,才说明该结点是叶结点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
typedefstructBiTNode {//二叉链表 int data; //数据域 structBiTNode *lchild;//左指针 structBiTNode *rchild;//右指针 } BiTNode, *BiTree; intgetLeafNodeNum(BiTree &root){ //统计叶结点个数 if (root == NULL) return0; elseif (root->lchild == NULL && root->rchild == NULL) return1; else { int left = getLeafNodeNum(root->lchild); int right = getLeafNodeNum(root->rchild); return left + right; } }
typedefstructBiTNode {//二叉链表 int data; //数据域 structBiTNode *lchild;//左指针 structBiTNode *rchild;//右指针 } BiTNode, *BiTree; intgetDepth(BiTree &root){ //计算深度 if (root == NULL) return0; int left = getDepth(root->lchild); int right = getDepth(root->rchild); return (left > right ? left : right) + 1; }