leetcode 104 :二叉树的最大深度
要做这题,还是得先了解下二叉树,come on!
二叉树是树的一种,所有我们从树的基本概念了解起。
树的基本概念
计算机科学中的树是长成这样的:
一、树的术语
1.节点的度: 一个节点中含有子树的个数(图中B节点的度为3)
2.树的度: 一颗树中,最大的节点的度(图中树的度就是B节点的度)
3.父亲节点或者父节点: 含有子节点的节点(图中的L,G等)
4.孩子节点或者子节点: 父节点的子节点(图中的H,I是B的子节点)
5.叶节点或者终节点: 度为零的节点,即没有子节点(图中的H,I,J等)
6.兄弟节点: 具有相同父节点的节点互称为兄弟节点(图中的O,L节点)
7.节点的层次: 从根开始定义,根为第一层,一次类推(B节点的层次为3)
8.树的高度和深度: 树中节点的最大层次
9.堂兄弟节点: 父节点在同一层的节点(图中的G和E节点)
10.节点的祖先: 从根到该节点所经分支的所有节点(图中F节点祖先为A,C)
11.子孙: 一某节点为根的子树中任一节点都为该节点的子孙(图中G节点的子孙为L,M,O)
了解完了这些,开始认识一些树的分类
二、树的种类
下面都是我用思维导图画的,不手打了…
我们的重点是掌握二叉树:
1. 完全二叉树
还是上图比较直观:
一句话概括就是:除最后一层,其它层得各个节点都含有两个子节点
特殊情况 —> 满二叉树:最后一层有2**(n-1)叶子节点(n表示树的深度)
2.平衡二叉树
在完全二叉树里面的两颗树都是平衡二叉树,现在来一个非平衡·二叉树感受下区别:
3.排序二叉树
总结:左子树比根节点小,右子树比根节点大
三、开始刷题
题目要求:给定一个二叉树,返回它的深度
题目详情
分析:找出根节点最大的子树的深度
如上图所示,一颗树可以分成子树,子树还能继续划分出子树…
于是我们可以想到用迭代的思想来做这道题
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if root == None:
return 0
else:
return max(self.maxDepth(root.left),self.maxDepth(root.right))+1
完毕,提交!