关注
在递归调用中,传递的数组和中序遍历的整个大数组是不同的,你不能用整个大数组的索引来代替递归传递的小数组中索引。
以调用左子树时,确定下次递归调用的前序数组的边界情况下
数组的边界是
preStart+1,(preStart +1)+ leftNum,
最原始的写法是
preStart+1,(preStart +1)+ rootIndex_Inorder-inStart,
而你的写法是
preStart+1,rootIndex_Inorder+1,
比如示例
[3,9,6,20,15,7]
[9,6,3,15,20,7]
3作为根,然后分为[9,6] [20,15,7] 和[9,6] [15,20,7]。以(9,6)为例,当前的prestart=1,rootIndex_Inorder=0,inStart=0,因此用正确做法算出的前序的左子树数组部分是(1+1,1+1+0-0),由于左闭右开,下次递归判断时,由于左右边界相等,知道9没有左子树,因此返回null,而你的算法是(1+1,0+1)越界了。
而你自己的示例是
[3,9,20,15,7]
[9,3,15,20,7],会在判断15的左右子树的时候,进行下一次递归的时候发生越界。
主要的原因就是,你需要更新每次递归的时,计算对应数组的一个偏移量,而不是直接用整个中序的索引直接计算。
查看原帖
4 2
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客85586392...:就团子这base 拉完了还top 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
149279次浏览 2538人参与
# 秋招落幕,你是He or Be #
3456次浏览 77人参与
# 应届生进小公司有什么影响吗 #
109182次浏览 1116人参与
# 比亚迪工作体验 #
70321次浏览 254人参与
# 你面试体验感最差/最好的公司 #
3386次浏览 57人参与
# 工作中听到最受打击的一句话 #
2746次浏览 62人参与
# 大厂VS公务员你怎么选 #
71507次浏览 661人参与
# 重来一次,你会对开始求职的自己说 #
3174次浏览 72人参与
# 一人说一个提前实习的好处 #
3751次浏览 75人参与
# 团建是“福利”还是是 “渡劫” #
4199次浏览 112人参与
# 实习没事做是福还是祸? #
8664次浏览 137人参与
# 如何排解工作中的焦虑 #
244198次浏览 2243人参与
# 从顶到拉给所有面过的公司评分 #
144841次浏览 518人参与
# 今年你最想重开的一场面试是? #
1544次浏览 26人参与
# 你小心翼翼的闯过多大的祸? #
7183次浏览 109人参与
# 联影求职进展汇总 #
123882次浏览 781人参与
# OPPO求职进展汇总 #
755984次浏览 5390人参与
# 互联网公司爆料 #
158635次浏览 724人参与
# 产品实习,你更倾向大公司or小公司 #
189155次浏览 2053人参与
# 秋招结束之后的日子 #
113941次浏览 1040人参与
