使用dfs(深度优先)

 使用递归的平衡因子的方法:9(0,0);15(0,0);7(0,0);20(1,1);3(1,2);很显然还需要+1,才可以实现树的深度记录。

class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if not root:
            return 0
        leftnode=self.maxDepth(root.left)
        rightnode=self.maxDepth(root.right)
        return max(leftnode,rightnode)+1
 
非递归的方式:
class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if root == None:
            return 0
        stack = [(root,1)]
        while stack:
            (node,level) = stack.pop(0)
            if node.left:
                stack.append((node.left,level+1))
            if node.right:
                stack.append((node.right,level+1))
                
        return level

 

 
使用bfs(广度优先)
class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if not root: return 0
        queue, res = [root], 0
        while queue:
            tmp = []
            for node in queue:
                if node.left: tmp.append(node.left)
                if node.right: tmp.append(node.right)
            queue = tmp
            res += 1
        return res

 

 

 

posted on 2020-04-23 09:41  topass123  阅读(105)  评论(0编辑  收藏  举报