二叉树深度
1、题目
2、题解
方法1:递归
思路:如果结点存在则返回结点左右子树深度的最大值加1(\(root_{depth}=max(left_{depth},right_{depth})+1\)),如果
左右子树为空则返回0。
代码实现:
1 2 3 4 5 6
| class Solution: def TreeDepth(self , pRoot: TreeNode) -> int: if not pRoot: return 0 return max([self.TreeDepth(pRoot.left),self.TreeDepth(pRoot.right)]) + 1
|
方法2:层遍历
思路:遍历每层的结点,用队列对结点进行存储。每次存储下一层结点时,深度加1。
代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import queue class Solution: def maxDepth(self , root: TreeNode) -> int: if not root: return 0 q= queue.Queue() q.put(root) res = 0 while not q.empty(): n = q.qsize() for i in range(n): node = q.get() if node.left: q.put(node.left) if node.right: q.put(node.right) res += 1 return res
|