深入理解二叉树与递归:从LeetCode实践出发【2】(题号235、236、1026、1123、1650)

递归是强大的问题求解工具,是程序设计中的一种重要思想和机制。递归有助于写出清晰易懂的代码,能有效提高程序的整体风格。此外,很多算法的实现都有赖于递归函数,例如DFS、回溯、动态规划等。通常,在下面三种情况下递归的方法会被用到:1)定义是递归的;2)数据结构是递归的;3)问题的解法是递归的。二叉树是一种典型的递归数据结构。因此,很多跟二叉树有关的问题用递归的代码来求解都是最方便的。本文主要以LeetCode中的题目为例,演示利用递归的方法解决二叉树有关问题的技巧与方法。同时,推荐参考《算法之美:隐匿在数据结构背后的原理》一书中的相关章节以了解更多本文未能充分尽述的细节(该书中的代码以C++写成)。

这是《深入理解二叉树与递归》系列文章的第2篇,这篇文章中涉及的问题都跟Ancestor有关。因为二叉树都是递归定义的,通常给定一个根节点root,可以知道它的左右子树(root.left, root.right),但是给定一个节点node,要想知道它的祖先,往往就没那么容易了。


题目1026:Maximum Difference Between Node and Ancestor

<
相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值