第一种方法,栈的递归,这种方法直接把函数在下面进行调用,然后返回左子树和右子树最大的就行了,在此之前要先进行判断它是否有root,如果没有就直接返回return

def max(self,root):
    if root is None:
        return 0
    left=self.max(root.left)
    right = self.max(root.right)
    return max(left,right)+1

第二种方法是往下遍历的方法,设置一个全局变量,之后定义一个函数,函数里面有个自增变量,然后让这个自增变量和全局变量取最大值,这样递归然后就可以得到最后的最长的

ans=0
def f(node,cnt):
    if node is None:
        reutrn 0 
    cnt+=1
    nonlocal ans
    ans=max(ans,cnt)
    f(node.left,cnt)
    f(node.right,cnt)
f(root,0)
return ans

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐