关于Leetcode“二叉树的最大深度”的思考

题目链接:leetcode,二叉树的最大深度


       这道题没有什么思考的渐进形式,但是我想分享的几个知识点,这几个知识点也是解决这个问题的关键,分别是:递归思想、指针的操作方法与二叉树的遍历方式。
我们首先贴上今天这道题的代码:

class TreeNode:
    def __init__(self, x) -> None:
        self.val = x
        self.left = None
        self.right = None


class Solution:
    def maxDepth(self, root):
        if root is None:
            return 0
        else:
            left_height = self.maxDepth(root.left)  # 对左分支进行递归
            right_height = self.maxDepth(root.right)  # 对右分支进行递归
            return max(left_height, right_height)+1

基本思路就是:
1、按着分叉的左边走,直到走不下去为止,返回一个“0”;
2、在父节点的函数主体中会选择右分叉开始新的递归,即重复步骤1;
3、当父节点分别遍历过了左分叉与右分叉,得到的返回值去较大的那个,加一就是当前节点能走到的最大深度,返回深度值即可,之后就回到了父节点的父节点,开始在父节点的父节点开始重复步骤2;


       首先我们说说“递归思想”。打个不确切的比方,递归思想就是个套娃,可以在函数本体中调用自己。博主第一次接触到递归思想是在二叉树与链表,虽然操作起来非常麻烦,但是递归的好处就是我们不用再集中注意力于操作数据的尺寸问题,我们可以设置一个停止节点,从而实现定长或条件遍历。同时对于操作数据进行循环处理时也可以使用递归的方法来实现。递归的思想是Leetcode题库中二叉树类型题目中必须要掌握的方法,否则就好像自己无法对一个列表进行循环语句遍历一样举步维艰。


       指针整个概念在Python中是不存在的,但是在很多教程中都在说遍历二叉树时如何如何挪动指针。在这道题目中我们要学会如何使用Python创建、使用二叉树。创建与使用的方法均在代码里了,这个东西不好讲,大家自己细细品吧…


       乍一听二叉树的遍历方式就是递归嘛,还有什么好说的呢?这句话确实没错,但是递归也有非常多种方式,包括左遍历、右遍历、层遍历等等(名字记不太清了,但是不同的遍历方式有不同的优缺点,读者按需选择)。不同的遍历方式对于程序的运行速度有很大的影响。


       今天的题目锻炼编程思维的作用似乎没有提供对于二叉树基本处理工具的作用大,是比较需要去记忆和理解的一道题目。


今天也是依旧高产的小庞~
晚安,爱你们~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值