ZBLOG

#include #include #include typedef char ElemType; //定义二叉树结点值的类型为字符型 int LEAFCOUNT=0; int NODECOUNT=0; typedef struct BiTNode { ///===============补充代码======================== }BiTNode, *BiTree; void Cr...

这段代码是一个二叉树的基本操作实现。以下是对应的补充代码:

typedef struct BiTNode
{
    ElemType data;
    struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;

void CreateBiTree(BiTree &T)
{
    char ch;
    scanf("%c", &ch);
    if (ch == '#')
        T = NULL;
    else
    {
        T = (BiTree)malloc(sizeof(BiTNode));
        T->data = ch;
        CreateBiTree(T->lchild);
        CreateBiTree(T->rchild);
    }
}

void PreOrderTraverse(BiTree T)
{
    if (T)
    {
        printf("%c ", T->data);
        PreOrderTraverse(T->lchild);
        PreOrderTraverse(T->rchild);
    }
}

void InOrderTraverse(BiTree T)
{
    if (T)
    {
        InOrderTraverse(T->lchild);
        printf("%c ", T->data);
        InOrderTraverse(T->rchild);
    }
}

void PostOrderTraverse(BiTree T)
{
    if (T)
    {
        PostOrderTraverse(T->lchild);
        PostOrderTraverse(T->rchild);
        printf("%c ", T->data);
    }
}

int BTDepth(BiTree T)
{
    if (T == NULL)
        return 0;
    
     int leftDepth = BTDepth(T->lchild);  
     int rightDepth = BTDepth(T->rchild); 

     return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}

void Leaf(BiTree T)
{
	if (T != NULL) 
	{
		if (T->lchild == NULL && T->rchild == NULL)
			LEAFCOUNT++;
		
		Leaf(T->lchild);
		Leaf(T->rchild);
	}
}

void NodeCount(BiTree T)
{
	if (T != NULL) 
	{
        NODECOUNT++;

	    NodeCount(T->lchild);
	    NodeCount(T->rchild);
    }
}

此外,还需要注意在main()函数中对应的调用和输入处理。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9254

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?