关于二叉树递归那点事儿
第一种方法,栈的递归,这种方法直接把函数在下面进行调用,然后返回左子树和右子树最大的就行了,在此之前要先进行判断它是否有root,如果没有就直接返回return。第二种方法是往下遍历的方法,设置一个全局变量,之后定义一个函数,函数里面有个自增变量,然后让这个自增变量和全局变量取最大值,这样递归然后就可以得到最后的最长的。
·
第一种方法,栈的递归,这种方法直接把函数在下面进行调用,然后返回左子树和右子树最大的就行了,在此之前要先进行判断它是否有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
树
更多推荐


所有评论(0)