用C语言写设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法对二叉树的结点(度为0、1、2)个数进行统计。 输入格式: 多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。 输出格式: 每组数据输出一行,每行三个数分别为二叉树的度为0、1、2的结点个数。每两个数用空格分隔。输入样例: 在这里给出一组输入。例如: abcd00e00f00ig00h00 abd00e00cf00g00 0 输出样例: 在这里给出相应的输出。例如: 5 0 4 4 0 3
时间: 2023-06-15 19:07:03 浏览: 98
编写一个将二叉树中每个结点的左右孩子交换的算法。
分析:
- 对于度为0的结点,只有空结点才是度为0的结点,所以当结点为空时,度0结点加1;
- 对于度为1的结点,只有左右子树中有一个为空,另一个不为空时,该结点的度为1,因此递归遍历左右子树,如果其中一个为空,另一个不为空,就将该结点的度1结点加1;
- 对于度为2的结点,当该结点的左右子树均不为空时,该结点的度为2,递归遍历左右子树,如果两个子树均不为空,就将该结点的度为2的结点加1。
具体实现见代码:
阅读全文