C 二叉树查找值为x的节点,并打印其所有的父节点

思路就跟输出二叉树一样的,只不过这次是找节点

查找节点

//找一个值为x的节点
BiThrTree findElement(BiThrTree T, ElementType x){
    
    if (!T)
        return NULL;
    if (T->data == x){
        return T;
    }
    else
    {
        BiThrTree temp;
        //先看下左边找到了没有
        temp = findElement(T->LeftTreeNode, x);
        //没有找到那就看看右边
        if(!temp){
            return findElement(T->RightTreeNode, x);
        }
        //这个跟输出不一样,得有个指针来接收。
        return temp;
    }
    return NULL;
}

输出此节点所有的父节点

递归的魅力,真是巧妙

//打印X节点所有父节点
int putRootofx(BiThrTree T, ElementType x){
	//没有就返回0
    if(!T)
        return 0;
    //找到了就返回1
    if(T->data == x){
        return 1;
    }
    //这个节点有值但不是要找到那个,那就往它的子节点下面看看
    if(T){
    	//只要子节点里面有符合条件的,那就将其输出出来
        if(putRootofx(T->LeftTreeNode, x) || putRootofx(T->RightTreeNode, x)){
            printf("%c ",T->data);
            return 1;
        }
    }
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赫凯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值