以二叉链表为存储结构,分别写出求二叉树结点总数及叶子总数的算法。

作者:高老师 浏览 1

以二叉链表为存储结构,分别写出求二叉树结点总数及叶子总数的算法。
【正确答案】:(1)求结点总数的递归定义为: 若为空树,结点总数为0。 若只有根结点,则结点总数为1。 否则,结点总数一根结点的左子树结点总数+根结点的右子树结点总数+1。 (2)求叶子总数的递归定义为: 若为空树,叶子总数为0。 若只有根结点,则叶子总数为1。 否则,叶子总数=根结点的左子树叶子总数+根结点的右子树叶子总数。 typedef char DataType; //定义DataType类型 typedef struct node{ DataType data; struct node*lchild,*rchild; //左右孩子子树 }BinTNode;//结点类型 typedef BinTNode*BinTree; //二叉树类型 int Node(BinTree T) { //算结点数 if(T) if((T一>lchild==NULL)&&(T一>rchild==NULL)) return 1; else return Node(T—>lchild)+Node(T一>rchild)+1; else return 0; } int Leaf(BinTree T) //算叶子数 if(T) if(T一>lchild==NULL)&&(T一>rchild==NULL) return 1; else return Leaf(T一>lchild)+Leaf(T一>rchild); else return 0; }

📱 扫码体验刷题小程序

微信小程序二维码

扫一扫使用我们的微信小程序

热门题目

已复制到剪贴板