美文网首页
33-二叉树的深度(34-平衡二叉树)

33-二叉树的深度(34-平衡二叉树)

作者: 老豆腐 | 来源:发表于2018-07-04 15:15 被阅读4次

首先是递归的方法

  • 如果只有根节点,那就返回1

  • 如果有左子树,没有右子树,那么树的深度就是左子树的深度+1。同理只有右子树的情况。

  • 如果既有左子树,又有右子树,那么就是两个子树中较大的深度+1

    def TreeDepth(self, pRoot):
      # write code here
        if not pRoot:
            return 0
        left = self.TreeDepth(pRoot.left)
        right = self.TreeDepth(pRoot.right)
        return max(left,right) +1
    

34-平衡二叉树

之所以把这道题放在这,因为它用到了求树的深度的方法,当然该方法效率较低,多次判断树的深度,之后会有效率高的方法。
主要步骤为:

  • 从根节点开始,判断它左子树和右子树的深度,判断他们相差是否大于1,是则返回False,否则继续
  • 递归根节点的左子树,和右子树,然后继续判断即可
# -*- 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
        if not pRoot:
            return True
        left = self.tree_d(pRoot.left)
        right = self.tree_d(pRoot.right)
        if abs(left-right)>1:
            return False
        return self.IsBalanced_Solution(pRoot.left)&self.IsBalanced_Solution(pRoot.right)
                  
    def tree_d(self,pRoot):
        if not pRoot:
            return 0
        left = self.tree_d(pRoot.left)
        right = self.tree_d(pRoot.right)
        return max(left,right)+1

相关文章

  • 33-二叉树的深度(34-平衡二叉树)

    首先是递归的方法 如果只有根节点,那就返回1 如果有左子树,没有右子树,那么树的深度就是左子树的深度+1。同理只有...

  • 判断平衡二叉树——Python

    给定一棵二叉树,判断它是否为平衡二叉树。 平衡二叉树的定义是:如果某二叉树中任意节点的左右子树的深度相差不超过1,...

  • 面试题55 - II. 平衡二叉树

    平衡二叉树 题目描述 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差...

  • 【剑指Offer】039——平衡二叉树(树)

    题目 输入一棵二叉树,判断该二叉树是否是平衡二叉树 思路 平衡二叉树:某节点的左右子树深度差绝对值不超过1。利用递...

  • LeetCode110 平衡二叉树

    题目: 思路:平衡二叉树的条件:1.左子树是平衡二叉树2.右子树是平衡二叉树3.左右子树之间的深度不超过1 代码实现:

  • 二叉树的深度和平衡二叉树(LeetCode 剑指Offer 55

    题目 输入一棵二叉树的根节点,求该树的深度。输入一棵二叉树的根节点,判断该树是不是平衡二叉树。 二叉树的深度 解析...

  • 二叉树笔试面试题集合

    二叉树深度 判断平衡二叉树 一种方法 可以利用求二叉树深度,从根节点开始递归。再求左右深度进行比较。最后求到叶子节...

  • 平衡二叉树(AVL)

    定义 平衡二叉树是建立在二叉平衡树基础上,目的使得各个节点的深度尽可能小。平衡二叉树是一颗二叉树,或者为空,或者满...

  • 判断一个树是否是BST 求一棵平衡二叉树的最小深度 判断一棵二叉树是否高度平衡

  • 面试题55_2:判断是否是平衡二叉树

    输入一棵二叉树,判断该二叉树是否是平衡二叉树 思路一:递归求每个子节点的深度,遇到深度差超过1的即不满足条件,如果...

网友评论

      本文标题:33-二叉树的深度(34-平衡二叉树)

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