二叉树的最大深度--python实现
2019-04-08 23:01
351 查看
题目描述:
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
返回它的最大深度 3 。
解题思路:
代码实现:
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def maxDepth(self, root): """ :type root: TreeNode :rtype: int """ if root is None: return 0 else: q = [(1, root)] max_depth = 0 while q: depth, cur_node = q.pop(0) if cur_node is not None: max_depth = max(depth, max_depth) q.append((depth + 1, cur_node.left)) q.append((depth + 1, cur_node.right)) return max_depth
还有一个直观的方法,就是递归,采用深度优先的方式搜索:
代码如下:
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def maxDepth(self, root): """ :type root: TreeNode :rtype: int """ # if root is None: # return 0 # else: # q = [(1, root)] # max_depth = 0 # while q: # depth, cur_node = q.pop(0) # if cur_node is not None: # max_depth = max(depth, max_depth) # q.append((depth + 1, cur_node.left)) # q.append((depth + 1, cur_node.right)) # return max_depth if root is None: return 0 else: left_height = self.maxDepth(root.left) right_height = self.maxDepth(root.right) return max(left_height, right_height) + 1
相关文章推荐
- python深度优先算法——二叉树、小偷问题、二叉树中的最大路径和、最大的岛屿实现实例
- python_lintcode_97二叉树的最大深度 _155二叉树的最小深度
- Python 阶乘的实现和递归的最大深度
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- Java实现二叉树的先序、中序、后序、层次遍历,数的最大深度、最大宽度
- 二叉树的深度[剑指offer]之python实现
- 【LeetCode-面试算法经典-Java实现】【104-Maximum Depth of Binary Tree(二叉树的最大深度)】
- 二叉树的最大深度和最小深度实现
- 【LeetCode-面试算法经典-Java实现】【104-Maximum Depth of Binary Tree(二叉树的最大深度)】
- python实现二叉树的广度优先遍历和深度优先遍历
- Leetcode 104 python 二叉树的最大深度
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- LeetCode--Maximum Depth of Binary Tree (检索二叉树的最大深度)Python
- 二叉树的最大/小深度的递归与非递归实现
- 二叉树最大深度-层遍历实现
- Python实现二叉树的深度
- 深度学习笔记-第2章-《深度学习入门——基于Python的理论与实现》
- 利用对象的思想创建二叉树并实现四种遍历(广序,先序,中序,后序)-python3版
- 二叉树的最大深度