C语言二叉树递归算法怎么做?

发布网友 发布时间:2022-04-22 07:52

我来回答

2个回答

热心网友 时间:2022-06-18 02:39

#include <stdio.h>
#include <string.h>

struct treenode{
    int value;
    treenode* left;
    treenode* right;
};
typedef treenode* BiTree;

void visit(treenode* node)
{
    printf("%2d ", node->value);
}

//    结点总数 
int node(BiTree T)
{
    if( !T ){
        return 0;
    }
    return node(T->left) + node(T->right) + 1;
}

//    前序 
void preOrder(BiTree T)
{
    if( T ){
        visit(T);
        preOrder(T->left);
        preOrder(T->right);    
    }
}

//    中序
void inOrder(BiTree T)
{
    if( T ){
        inOrder(T->left);
        visit(T);
        inOrder(T->right);    
    }    


//    后序
void postOrder(BiTree T)
{
    if( T ){
        postOrder(T->left);
        postOrder(T->right);    
        visit(T);
    }    


//    叶子节点数
int leafnode(BiTree T)
{
    if( T ){
        if( !T->left && !T->right )
            return 1;
        else
            leafnode(T->left) + leafnode(T->right);    
    }else{
        return 0;
    }


int height(BiTree T)
{
    if( T ){
        int lh = height(T->left);
        int rh = height(T->right);
        return (lh>rh ? lh:rh) + 1;
    }else{
        return 0;
    }
}

int main()
{

    
    return 0;
}

热心网友 时间:2022-06-18 02:40

#include"3-1.h"
void visit(BiTree bt)
{
printf("%c",bt->data);
}
int node(BiTree T)
{
if(T== NULL)return 0;
else return node(T->lchild)+node(T->rchild)+1;
}
int main()
{
char str[50];
int i;
BiTree t;
printf("请输入要创建的二叉树的序列:");
scanf("%s",str);
t=CreateBiTree(str);

printf("递归前序遍历的结果为:");
PreOrder(t);
printf("\n递归中序遍历的结果为:");
InOrder(t);
printf("\n归后序遍历的结果为:");
PostOrder(t);

i=BitreeLeaf(t);
printf("\n叶子总数为:%d",i);
i=BitreeDepth(t);
printf("\n深度为:%d",i);
i=node(t);
printf("\n结点总数为:%d",i);
return 0;

}
对了,你有头文件了嘛?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com