1. 程式人生 > >[劍指offer]平衡二叉樹

[劍指offer]平衡二叉樹

題目描述

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

分析:平衡二叉樹是一顆空樹或者左右子樹的高度差不超過1。感覺我用的方法很蠢。。就是按照定義的左右子樹的高度差求出來再判斷。。

程式碼:

class Solution {
public:
    int getDepth(TreeNode* pRoot){
        if(pRoot==nullptr) return 0;
        return 1+max(getDepth(pRoot->left),getDepth(pRoot->right));
    }
    bool IsBalanced_Solution(TreeNode* pRoot) {
		if(pRoot==nullptr) return true;
        int left=getDepth(pRoot->left);
        int right=getDepth(pRoot->right);
        if(left==right||left==right+1||right==left+1) return true;
        return false;
    }
};


相關推薦

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 平衡 python實現

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

[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。由於需要對每個節點進行判斷,所以可以採用遞迴的思路進行解決。具體思路是:先求出根節點的左右子樹的深度,並對兩

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

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

Offer的深度、平衡

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

offer鏡像

tno eno 描述 temp 結點 輸出 urn tree 定義 package Problem19; /* * 問題描述: * 請完成一個函數,輸入一個二叉樹,該函數輸出它的鏡像; */ //定義二叉樹的結構 class BinaryTreeNode {

Offer——重建

urn return 重復 col 分割 init 樹的遍歷 ++ fin 題目描述: 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,

Offer——把打印成多行

blog queue 隊列 int 利用 vector ont str logs 題目描述: 從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 分析: 二叉樹的層次遍歷,利用隊列。 代碼: 1 /* 2 struct TreeNode { 3

offer-25.中和為某一值的路徑

path val tmp aux node ptr body 深度 light 0 題目 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 1 分析 深度優先遍歷+回溯. 出點就是,

Offer打印成多行【23】

tree height -- main lis true evel width pac 劍指Offer:二叉樹打印成多行【23】 題目描述 從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 題目分析    Java題解 package tree; i

offer--重建

lag node rec 劍指offer == str eno truct 個數字 題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4

offer ——重建

數字 分析 nal nod 遍歷 中序遍歷 i++ algorithm vector p62 輸入前序和中序遍歷的結果(不包含重復的數字),重建二叉樹。 主要是分析兩個序列的規律,然後用遞歸的方式找到每一個根節點,從而完成構建。 #include<iostream&

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

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