代码随想录刷题第十六天
二叉树最大深度 (LC 104)
题目思路:
代码实现:
class Solution(object):
def maxDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if root.left is None:
return 0
left = self.maxDepth(root.left)
right = self.maxDepth(root.right)
return max(left, right) + 1
二叉树最小深度 (LC 111)
注意这道题与上一道题不大一样,不可以直接使用min(left, right), 最小高度必须指的是从根节点到坐进的叶子节点
题目思路:
代码实现:
class Solution(object):
def minDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if root is None:
return 0
left = self.minDepth(root.left)
right = self.minDepth(root.right)
if root.left is None and root.right is not None:
return 1 + right
if root.left is not None and root.right is None:
return 1+left
return 1+min(left, right)
完全二叉树节点个数 (LC 222)
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。
本题非常简单,没有什么特殊的思路,就是统计所有的节点,使用后序遍历所有节点即可
代码实现:
class Solution(object):
def countNodes(self, root):
if root is None:
return 0
left_num = self.countNodes(root.left)
right_num = self.countNodes(root.right)
return 1+left_num+right_num