美文网首页剑指offer- python实现
面试题55:二叉树的深度

面试题55:二叉树的深度

作者: 不会编程的程序猿甲 | 来源:发表于2020-04-02 15:47 被阅读0次

题目一:
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

思路:
这道题目只需要计算出树的深度而无需记录节点,根据题意,如果当前节点只有左子树,那么深度为左子树加1;如果当前节点只有右子树,那么深度为右子树加1;如果两个子树都有,那么树的深度是左右子树中深度较大的加1。以上代码可以利用递归比较简单的实现。

代码实现:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def TreeDepth(self, pRoot):
        # write code here
        if pRoot == None:
            return 0      #递归结束条件
        nleft = self.TreeDepth(pRoot.left)
        nright = self.TreeDepth(pRoot.right)
        if nleft>nright:
            return nleft+1
        else:
            return nright+1

提交结果:

题目二:
平衡二叉树:输入一棵二叉树,判断该二叉树是否是平衡二叉树。

思路:
这道题可以利用上述的思路,每次进行遍历左右子树,然后得出其深度,然后再计算是否平衡。但是这种算法自顶而下,会有重复,因此我们想寻求优化的方法,可以采用后序遍历,每次遍历时顺便将深度保存然后计算出是否平衡,如果不平衡会返回对应标志,直至结束为止,这样可以避免重复而解决问题。

代码实现:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def IsBalanced_Solution(self, pRoot):
        # write code here\
        return self.HeightCore(pRoot)>=0
    

    #后续遍历的思想
    def HeightCore(self,pRoot):
        if not pRoot:
            return 0   #深度为0
        nleft = self.HeightCore(pRoot.left)
        nright = self.HeightCore(pRoot.right)
        if abs(nleft-nright)<=1 and nleft>=0 and nright>=0:  #每次对遍历的左子树和右子树深度进行判断
            return max(nleft,nright)+1
        else:
            return -1   #否则不平衡

提交结果:

相关文章

  • 剑指offer第二版-55.二叉树的深度

    本系列导航:剑指offer(第二版)java实现导航帖 面试题55:二叉树的深度 题目要求:求二叉树的深度。仅仅包...

  • 为什么实习也要笔试啊

    1.剑指 Offer 55 - I. 二叉树的深度 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过...

  • 2022-4-11 搜索 排序

    搜索: 剑指 Offer 55 - I. 二叉树的深度[https://leetcode-cn.com/probl...

  • 面试题55:二叉树的深度

    题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的...

  • 面试题55:二叉树的深度

    题目一:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长...

  • 二叉树面试题基本问题

    二叉树的最大深度与最小深度 二叉树的最大深度 最大深度是指二叉树根节点到该树叶子节点的最大路径长度。而最小深度自然...

  • 面试题55_1:二叉树的深度

    输入一棵二叉树,求该树的深度。 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树...

  • 面试题55_I_二叉树的深度

    题目描述 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最...

  • 面试题55 - I. 二叉树的深度

    二叉树的深度 题目描述 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树...

  • 111. Minimum Depth of Binary Tre

    题目 给定一个二叉树,求二叉树最小深度 解析 一个二叉树的最小深度,就是求左子树最小深度或者右子树最小深度,然后加...

网友评论

    本文标题:面试题55:二叉树的深度

    本文链接:https://www.haomeiwen.com/subject/vsmxphtx.html