查找二叉树中值为x的节点

一:前提

本文紧接此篇博客:

递归实现 前/中/后序 遍历二叉树 的详细讲解-CSDN博客

模型依旧为:

二:代码

三:递归展开

假设找3:

假设找 7,7不存在,最后返回NULL

左:

右:

可知:

1:当ret不为空的时候,也就是找到x值的节点的时候,就会一级一级的往上返回 

2:当ret一直都为空的时候,最后会return NULL 终止查找,该函数返回NULL

3:本篇为后序遍历查找,先查找跟,再left,再right

四:常见书写错误

A:

错在:

1:没有变量来接受左右孩子的TreeFind 的 返回值,所以无法根据返回值来判断是否还要继续查找

2:所以会不管找没找到,都会一直的查找下去

B:

错在:

1:|| 的返回值只会是真或者假,而 TreeFind函数的返回值是结构体指针,无法接受 || 的返回值

2:如果 TreeFind函数的返回值是 Bool值,到可以这么写,不过就变成了判断是否存在值为x的节点了。

C:

错在:

1:虽然有ret变量来接收左右孩子的 TreeFind函数的返回值,但是没有在两个函数之间进行判断,所以不管函数找没找到,都会一直查找,正确的节点给到了ret,但是会被覆盖。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值