已知一棵二叉树是以二叉链表的形式存储的,其结点结构说明如下: struct node { int data; struct node *
已知一棵二叉树是以二叉链表的形式存储的,其结点结构说明如下:structnode{intdata;structnode*left;structnode*right;};要...
已知一棵二叉树是以二叉链表的形式存储的,其结点结构说明如下:
struct node
{
int data;
struct node * left;
struct node * right;
};
要求写出2个具有下面功能的算法:
①、求出以T为根的子树的结点个数。
②、求出以T为根的子树的高度。 展开
struct node
{
int data;
struct node * left;
struct node * right;
};
要求写出2个具有下面功能的算法:
①、求出以T为根的子树的结点个数。
②、求出以T为根的子树的高度。 展开
2个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
/*①、求出以T为根的子树的结点个数。
②、求出以T为根的子树的高度。*/
typedef struct node
{
int data;
struct node * left;
struct node * right;
}BiTNode,*BiTree;
/*①、求出以T为根的子树的结点个数。*/
void CountLeaf (BiTree T, int& count)
{ //递归方法,
if ( T )
{
if ((!T->lchild)&& (!T->rchild))
count++;
CountLeaf( T->lchild, count); // 统计左子树中叶子结点个数
CountLeaf( T->rchild, count); // 统计右子树中叶子结点个数
}
}
/*②、求出以T为根的子树的高度。*/
int Depth(BinTree *T)
{
int dep1,dep2;
if(T==Null) return(0);
else
{
dep1=Depth(T->lchild);
dep2=Depth(T->rchild);
return dep1 > dep2 ? dep1 +1 : dep2 + 1;
}
#include<stdlib.h>
/*①、求出以T为根的子树的结点个数。
②、求出以T为根的子树的高度。*/
typedef struct node
{
int data;
struct node * left;
struct node * right;
}BiTNode,*BiTree;
/*①、求出以T为根的子树的结点个数。*/
void CountLeaf (BiTree T, int& count)
{ //递归方法,
if ( T )
{
if ((!T->lchild)&& (!T->rchild))
count++;
CountLeaf( T->lchild, count); // 统计左子树中叶子结点个数
CountLeaf( T->rchild, count); // 统计右子树中叶子结点个数
}
}
/*②、求出以T为根的子树的高度。*/
int Depth(BinTree *T)
{
int dep1,dep2;
if(T==Null) return(0);
else
{
dep1=Depth(T->lchild);
dep2=Depth(T->rchild);
return dep1 > dep2 ? dep1 +1 : dep2 + 1;
}
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询