二叉树建立及遍历

本文介绍了一种使用递归方式建立二叉树并进行中序遍历的方法,通过C语言实现,详细解释了如何利用二重指针在递归过程中正确构建和访问树节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二叉树的建立以及遍历

  • 利用递归的方式建立二叉树 并以中序遍历的方式读取数据,根据遍历二叉树的三种方式,只需要在递归时修改访问结点的元素即可。
#include <stdio.h>
#include <stdlib.h>
typedef struct Binode{
    char data;
    struct Binode *Rchild ,*Lchild;
}BiTnode,*BiTree;
void createBTree( BiTree *T)
{
    char c ;
    scanf("%c",&c);
    if(' '==c){
        *T=NULL;
    }
    else{
        *T=(BiTnode*)malloc(sizeof(BiTnode));
        (*T)->data=c;
        createBTree(&(*T)->Lchild);
        createBTree(&(*T)->Rchild);
    }
}
void visit(char c ,int level){
    printf("%c   %d\n",c,level);
}
 void preOrderTraverse(BiTree T, int level)
{
    if(T)
    {
        preOrderTraverse(T->Lchild,level+1);
        visit(T->data,level);
        preOrderTraverse(T->Rchild,level+1);
    }
}
int main()
{
    BiTree t ;
    t=NULL;
    printf("创建二叉树,以空格代表子结点为空:\n");
    createBTree(&t);
    preOrderTraverse(t,1);
    return 0;
}

注意:在此建立二叉树使用的是指针的指针,如果用的时是指针的话,作为形参传递给函数,当函数返回后,函数出栈,也就不能 获得结点信息,而使用二重指针 头节点本身为指针,在函数递归的过程中需要修改本身的值,就需要使用二重指针,这类似于利用函数交换值得思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值