Leetcode 104 python 二叉树的最大深度
2019-03-08 15:54
771 查看
题意:
给定一个二叉树,找出其最大深度(二叉树的深度为根节点到最远叶子节点的最长路径上的节点数)。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]
3 / \ 9 20 / \ 15 7
返回它的最大深度 3 。
方法一:
利用一个stack(栈)放置从树中遍历出来的节点,设置一个指针(gp),遇到每层最后一个往后移,层数加一;
# 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): """ :type root: TreeNode :rtype: int """ ans = 0 if root == None: return ans st = [] #栈 st.append(root) # temp, gp = st[0], st[0] gp = st[0] #gp为指向每层最后一个节点的指针 ans += 1 #ans表示层数 while len(st) != 0: temp = st[0] if temp.left != None: st.append(temp.left) if temp.right != None: st.append(temp.right) #遇到每层最后一个往后移,层数加一 if gp == temp: gp = st[len(st)-1] if gp != st[0]: ans += 1 st.pop(0) return ans
方法二:递归
# 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): """ :type root: TreeNode :rtype: int """ if root == None: return 0 else: return max(self.maxDepth(root.left),self.maxDepth(root.right))+1
相关文章推荐
- 【LeetCode】[104] 二叉树的最大深度——“递归”
- LeetCode:104_Maximum Depth of Binary Tree | 二叉树的最大深度 | Easy
- 【LeetCode-面试算法经典-Java实现】【104-Maximum Depth of Binary Tree(二叉树的最大深度)】
- LeetCode:104_Maximum Depth of Binary Tree | 二叉树的最大深度 | Easy
- LeetCode 104 Maximum Depth of Binary Tree(二叉树的最大深度)
- LeetCode-104.二叉树的最大深度(相关话题:递归)
- 【LeetCode-面试算法经典-Java实现】【104-Maximum Depth of Binary Tree(二叉树的最大深度)】
- leetcode 104求二叉树的最大深度
- leetcode之二叉树类之二叉树深度系列-----104/111/110/108/109 二叉树最大/最小深度/AVL树的判断和由有序序列生成(牵扯分治相关,OJ105/106)
- LeetCode:104_Maximum Depth of Binary Tree | 二叉树的最大深度 | 深度优先与广度优先深入理解
- Leetcode 104 Maximum Depth of Binary Tree 二叉树的最大深度
- LeetCode--Maximum Depth of Binary Tree (检索二叉树的最大深度)Python
- LeetCode 104--二叉树的最大深度
- [LeetCode] 104 二叉树最大深度
- LeetCode 104 二叉树的最大深度
- LeetCode104--二叉树最大深度
- 二叉树的最大深度(leetcode-104)
- [LeetCode-104] Maximum Depth of Binary Tree(二叉树最大深度)
- 104. 二叉树的最大深度
- leetcode 二叉树的最大深度