1. 程式人生 > >劍指offer 平衡二叉樹 python實現

劍指offer 平衡二叉樹 python實現

# -*- 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):
        bool_flag, depth = self.IsBalanced(pRoot)
        return bool_flag
        
    def IsBalanced(self, pRoot):
        if not pRoot:
            return True, 0
        bool_left, left_depth = self.IsBalanced(pRoot.left)
        bool_right, right_depth = self.IsBalanced(pRoot.right)
        if bool_left and bool_right:
            diff = left_depth - right_depth
            if -1 <= diff <= 1:
                depth = left_depth
                if diff < 0:
                    depth = right_depth
                return True, depth+1
        return False, 0
        

相關推薦

offer 平衡 python實現

# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.rig

Offer - 平衡

log public oot com int 技術 pos item span https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=13&tqId=11192&tPa

Offer-平衡

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 public class Solution { public boolean IsBalanced_Solution(TreeNode root) { return getDepth(root)

offer——平衡判定

針對於樹的操作,大部分都是用遞迴操作的,根據遞迴運算,要確定重複迴圈的過程以及截止條件,不過針對二叉樹,還是比較難思考的。 class Solution: res=True def IsBalance_Solution(self,pRoot): self.judge(pRoot)

[offer]平衡

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 分析:平衡二叉樹是一顆空樹或者左右子樹的高度差不超過1。感覺我用的方法很蠢。。就是按照定義的左右子樹的高度差求出來再判斷。。 程式碼:

offer平衡

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 public class Solution { private boolean isBanlanced = true; public boolean IsBalanced_Soluti

offer -- 平衡

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 如果一棵樹是平衡二叉樹則返回該樹的高度,否則返回-1 對於一棵樹只要判斷其左右子樹均為平衡二叉樹且高度相差不超過1則為平衡二叉樹 public cl

[offer] 平衡

本文首發於我的個人部落格:尾尾部落 題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 解題思路 定義:平衡二叉查詢樹,簡稱平衡二叉樹。 可以是空樹。 假如不是空樹,任何一

Offer | 平衡

一、題目 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 二、講解 (1)平衡二叉樹 平衡二叉樹(Balanced Binary Tree)又被稱為AVL樹(有別於AVL演算法),且具有以下性質: 它是一棵空樹或它的左右兩個子樹的高度差的絕對

offer——平衡

題目描述: 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 思路: 所謂平衡二叉樹就對某個結點來講,其左子樹的深度與右子樹深度的絕對值不超過1。由於需要對每個節點進行判斷,所以可以採用遞迴的思路進行解決。具體思路是:先求出根節點的左右子樹的深度,並對兩

pythonoffer系列中和為某一值的路徑

not 和為某一值的路徑 python 數組長度 self. expect pytho def lis 題目描述 輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(註意:

offer中和為某一值的路徑【python

題目描述 輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,陣列長度大的陣列靠前) 思路: 暴力遍歷二叉樹每一個節點,採用遞歸回溯的思想。建立一個全域性的re

[python版]offer -- 重建

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。 程式碼實現 # -*- codi

offer中和為某一值的路徑(Python

題目描述 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 思路:首先要理解題意,是從根節點往子節點連。

pythonoffer系列的下一個節點

題目:給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。solution思路:第一步還是找到某個節點的根節點,方法是一直使用next判斷即可。 再將從根節點中序遍歷的結果儲存到一個數組中,直接

offer中和為某一值的路徑(Python

站在巨人的肩膀上,風景這邊獨好; 親自爬上巨人的肩膀,才知風景為什麼這麼美。 題目描述 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 解題思

offer:判斷是不是平衡(java)

題目:輸入一棵二叉樹的根節點,判斷該樹是不是平衡的二叉樹。如果某二叉樹中任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。     有了求二叉樹的深度的經驗之後再解決這個問題,我們很容易就能想到一個思路:在遍歷樹的每個結點的時候,呼叫函式TreeDepth得到

Offer的深度、平衡

二叉樹的深度 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。 /* struct TreeNode { int val; struct TreeNode *

offer的深度(Python

題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。 解題思路 兩種解法,一種是第一時間的思路,即獲得根節點到每個葉節點的深度,取其中最長的返回: class Soluti

offer的映象(Python

問題描述 操作給定的二叉樹,將其變換為源二叉樹的映象。 思路描述 程式碼比文字更直觀 文字描述:新建一個二叉樹,利用遞迴法,將源二叉樹上的左節點賦值到新二叉樹的右節點,將源二叉樹上的右節點賦值到新二叉樹的左節點。 Python程式碼