二叉树总结(四)

1.技巧描述

对于二叉树的问题,除了采用深度优先搜索和广度优先搜索外,还可以在这两个方法上做一些优化,比如预处理、用迭代代替递归、回溯。

  • 预处理:比如对要处理的数据提前做哈希映射,或者计算前缀和、后缀和,计算差分数组,构建前缀树,构建树状数组等等。

  • 用迭代代替递归:递归一般会有很多重复的计算过程,可以用迭代代替递归,从而提高效率。一般使用栈的方式来实现。

  • 回溯:通过特定的方式,回到上一层递归的状态。一般是删除集合最后一个元素,或者重置到原来的长度等等。

2.实战演练

本题使用了深度优先搜索的方法。对合并节点进行处理时,如果两者都不为空,新建一个节点,值为t1的值加上t2的值。

本题使用了预处理的技巧。通过对要处理的数据提前做哈希映射,从而快速找到根节点在中序序列的索引。

本题使用了深度优先搜索的方法。每次交换当前节点的左右子节点。

本题使用了迭代代替递归的技巧。通过栈来完成二叉树的中序遍历。

本题使用了回溯的技巧。通过删除集合的最后一个元素,从而回退到上一层节点的位置。

xqxls的题解 文章被收录于专栏

牛客题解

全部评论

相关推荐

Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务