1. 程式人生 > >劍指offer40題(平衡二叉樹)

劍指offer40題(平衡二叉樹)

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

思路:左右子樹深度相差不超過1就是平衡二叉樹。

程式碼:

public class Solution {

    boolean isBalanced=true;
    public boolean IsBalanced_Solution(TreeNode root) {

        getDepth(root);
        return isBalanced;
    }
    public int getDepth(TreeNode root){
        if(root==null)
            return 
0; int left=getDepth(root.left); int right=getDepth(root.right); if(Math.abs(left-right)>1){ isBalanced=false; } return Math.max(left,right)+1; } }

相關推薦

offer40平衡

題目:輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 思路:左右子樹深度相差不超過1就是平衡二叉樹。 程式碼: public class Solution { boolean isBalanced=true; public boolean IsBalan

#資料結構與演算法學習筆記#Offer35:是否平衡/AVL + 測試用例Java、C/C++

2018.11.3 前幾天有用遞迴實現了二叉樹的深度#資料結構與演算法學習筆記#劍指Offer36:二叉樹的深度(Java),因此可以對每個結點先序遍歷進行一次平衡驗證,只要確定每個結點都是平衡的

offer-39:平衡

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 思路 首先,什麼是平衡二叉樹?如果二叉樹中任意結點的左右子樹深度相差不超過1,那麼它就是平衡二叉樹。 最直接的做法,遍歷每個結點,藉助一個獲取樹深度的遞迴函式,根據該結點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進

Offer》之“平衡

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 程式碼實現 /**根據平衡二叉樹定義,任意節點左右子數高度不能相差超過1。 所以我們用遞迴在求高度的同時判斷樹是否平衡, 如果平衡

PAT 1123—— Is It a Complete AVL Tree平衡【左旋右旋各種旋】

#include <cstdio> #include <algorithm> #include <vector> #include <iostream> #include <queue> using namespace std;

Java資料結構之 AVL平衡簡析

AVL(即平衡二叉樹)樹是帶有平衡條件的二叉查詢樹(二叉查詢樹即左孩子小於根節點,右孩子大於根節點的二叉樹)。一顆AVL樹是其每個節點的左子樹和右子樹的高度最多差 1 的二叉查詢樹(空樹的高度定為-1),只有一個節點的樹高度為0。在高度為h的AVL樹中,最少節點數S(h)=S

手動編寫AVL平衡,實現了基本的add、get 、remove、 toString、 contains等方法,

平衡二叉樹:是指一棵空樹或者是任意節點的左右孩子的高度相差絕對值小於等於1 package com.hcc.DStructure; import java.util.ArrayList; import java.util.concurrent.ArrayBlockingQ

一步一圖一程式碼,一定要讓你真正徹底明白紅黑平衡

一步一圖一程式碼,一定要讓你真正徹底明白紅黑樹 作者:July   二零一一年一月九日 ----------------------------- 本文參考: I、  The Art of Computer Programming Volume I II、 I

【LeetCode-面試演算法經典-Java實現】【110-Balanced Binary Tree平衡

原題   Given a binary tree, determine if it is height-balanced.   For this problem, a height-

的深度平衡

題目   輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。 思路   如果一棵樹只有一個結點,它的深度為1,如果根節點只有左子樹而沒有右子樹,那麼樹的深度應該是其左子樹的深度+1.同樣如果根節點只有右子樹而沒有左子樹,那麼樹的深度應

資料結構之 AVL平衡C語言實現

AVL樹(平衡二叉樹) 1. AVL樹定義和性質 AVL(Adelson-Velskii和Landis發明者的首字母)樹時帶有平衡條件的二叉查詢樹。 二叉查詢樹的效能分析: 在一顆左右子樹高度平衡情況下,最優的時間複雜度為O(log2n),這與這半

LeetCode第101對稱

原題如下: 給定一個二叉樹,檢查它是否是映象對稱的。 例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。 1 / 2 2 / \ / 3 4 4 3 但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的: 1 / 2

offer程式設計JAVA實現)——第39平衡

github https://github.com/JasonZhangCauc/JZOffer 劍指offer程式設計題(JAVA實現)——第39題:平衡二叉樹 題目描述

Offerjava+第六,重建

思路:先找出根節點,然後利用遞迴方法構造二叉樹 程式碼實現: import java.util.Arrays; class TreeNode{ int val; TreeNode left; TreeNode right; TreeNode(int x){val = x;} } p

offer——14的映象交換

/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.va

offer:對稱的java

/** * 題目: * 請實現一個函式,用來判斷一顆二叉樹是不是對稱的。 * 注意,如果一個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。 * */ public class P159_IsSymmerical { boolean

C++offer-60:把列印成多行

劍指offer-60:把二叉樹列印成多行 目錄 1題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 2解析及答案 層次遍歷 跟上一題一樣,將奇偶行去掉

offer-63:搜尋的第k個結點

題目描述 給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。 實驗平臺:牛客網 解決思路:

offer》第三十七序列化二

nbsp pre 三十七 === eof istream node nod style // 面試題37:序列化二叉樹 // 題目:請實現兩個函數,分別用來序列化和反序列化二叉樹。 #include "BinaryTree.h" #include <io

offer十八之的鏡像

img ret code 如果 close http span coder view 一、題目   操作給定的二叉樹,將其變換為源二叉樹的鏡像。二叉樹的鏡像定義: 源二叉樹 : 8 / 6 10