树6,例题二叉树的最大、最小深度

2018-08-01  本文已影响0人  小碧小琳

都是用DFS来解决,提到DFS,很自然的想到用递归做

一、Maximum Depth of Binary Tree

参考Maximum Depth of Binary Tree

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def maxDepth(self, root):
        if root == None:
            return 0
        else:
            return max(self.maxDepth(root.right)+1,self.maxDepth(root.left)+1)

二、Minimum Depth of Binary Tree

在二叉树的功能测试中,经常会有这样的测试样例:没有分叉,一条路走到黑的树。
比如一条树从头到尾只有左子节点,如果直接把上述的代码中max改为min,那么就会在一开始对右子节点进行递归调用时返回0,而其实,对于这种特殊情况右子节点是压根不能考虑的。

因此在一开始,需要判断这个树的根节点没有子节点,只有一个子节点,有两个子节点的情况。

这是最短路径长度的代码

class Solution:
    def minDepth(self, root):
        if root == None:
            return 0
        if root.left ==None and root.right ==None:
            return 1
        elif root.left == None:#左子节点为空,父节点需要向右子节点走,一直走到叶节点
            return self.minDepth(root.right) + 1
        elif root.right == None:
            return self.minDepth(root.left) + 1
        else:
            return min(self.minDepth(root.right),self.minDepth(root.left))+1
上一篇下一篇

猜你喜欢

热点阅读