设一棵二叉树以二叉链表表示,试以成员函数形式编写有关二叉树的递归算法:(1)统计二叉树中度为
1的结点个数。
(2)统计二叉树中度为2的结点个数。
(3)统计二叉树中度为0(叶结点)的结点个数。
(4)统计二叉树的深度。
(5)统计二叉树的宽度,即在二叉树的各层上,具有结点数最多的那一层上结点总数。
(6)从二叉树中删去所有叶结点。
(7)计算二叉树中指定结点*p所在层次。
(8)计算二叉树中各结点中的最大元素的值。
(9)以前序次序输出一棵二叉树所有结点的数据值及结点所在的层次。
1的结点个数。
(2)统计二叉树中度为2的结点个数。
(3)统计二叉树中度为0(叶结点)的结点个数。
(4)统计二叉树的深度。
(5)统计二叉树的宽度,即在二叉树的各层上,具有结点数最多的那一层上结点总数。
(6)从二叉树中删去所有叶结点。
(7)计算二叉树中指定结点*p所在层次。
(8)计算二叉树中各结点中的最大元素的值。
(9)以前序次序输出一棵二叉树所有结点的数据值及结点所在的层次。
A、int LCC(BiTree T) { if(T==NULL) return 0; if(T->lchild != NULL && T->rchild==NULL) return 1 + LCC(T->lchild) ; }
B、int LCC(BiTree T) { if(T==NULL) return 0; if(T->lchild != NULL && T->rchild==NULL) return 1 + LCC(T->lchild) + LCC(T->rchild); else return LCC(T->rchild); }
C、int LCC(BiTree T) { if(T==NULL) return 0; if(T->lchild != NULL) return 1 + LCC(T->lchild) + LCC(T->rchild); else return LCC(T->rchild); }
D、int LCC(BiTree T) { if(T==NULL) return 0; if(T->lchild != NULL) return 1 + LCC(T->lchild) ; else return 1+LCC(T->rchild); }
解题思路:二叉树的先序遍历非递归算法利用栈结构,从二又树的根结点开始,输出结点信息,同时将结点指针入栈,然后顺着左子树,依次将其左子树各个结点值输出,同时结点指针入栈,直到左子树为空;然后让栈顶指针出栈,接着处理右子树。
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!