分享一下我写二叉树的相关思路

本文介绍了如何从数学角度理解二叉树递归,将其视为数列的应用,并给出了求解二叉树问题的基本步骤,包括空指针处理、root操作和递归子树。作者强调实践的重要性,鼓励读者动手尝试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做二叉树的时候,很多时候,对于刚开始的同学来说,应该都是比较困难的,今天我将用数学的角度来和同学们分享解答二叉树的相关问题如何求解。

fbbfa8a1583d434aa3bf009921243703.jpg

 其实,二叉树如果你想通过循环来进行,很多时候都是很复杂并且可能不能实现的,那么,一般情况下,二叉树的相关问题(至少目前我所讲的简单的二叉树),都可以用递归简单的完成。

  说到这里,我便想讲讲递归的实质。递归其实就是中学阶段大家学过的数列,作为一个接触过数学竞赛的学生,我想说,计算机中的递归就是数列的暴力实现,什么是数列,数列就是一串满足某些相同关系的数的集合,即通过某些项,我可以求后面的项,以此类推,数列的无穷项理论都是可行的。在中学阶段我们不能用暴力方式求的通项,只能用一些巧妙的方式来求的通项公式,而计算机就是让我们避开巧妙,利用计算机的庞大算力,直接求的结果b7f5c88d5a7c44d2b0a168559df279fc.jpg

 这是一个标准的斐波那契数列,我们首先有基本项,然后通过已知的方式,就可以求的第n项,有人肯定要问为什么要给出两个基础项,因为只有有了开始的两项才能递归,这个基础项视情况而定,下面我们来看看斐波那契数列的ad67d3898af146c5a6adda0748188b44.jpg

 分析这个函数就是首先给出你他的前两项,如果没有到,就给出他的计算机制

那么,如果是对于二叉树,我们应该怎么思考呢?首先,我们必须将二叉树将一个二叉树看成一个root节点和左子树和右子树(即递归的思想,将左子树和右子树看作下一次递归的root以此类推),这里我将给出做二叉树的模板。8988dd68cab44e72afe58041ae1dc7ea.jpg

 

134c75a41c814053a932b391e4826f9b.jpg

 

这里给出了一道中等难度的oj题,不难发现,对于二叉树的递归问题,无非就是上面总结的三部,首先给出空指针的操作,其次就是分析对root的操作,最后用原函数作用于左子树和右子树。当然对root的操作可能伴随着对左子树和右子树的操作,本题就是一个典型。

总结:再好的方法都不如自己写一遍,所以我今天在这里只是客观分析了二叉树的基本做法,如果感兴趣,也可以关注我的上一篇博客:二叉树递归中隐藏的恐怖的复杂度问题

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值