樹 7 判斷給定的二叉樹是否是平衡的

2021-10-08 21:04:43 字數 546 閱讀 4001

q:

在這個問題中,定義平衡二叉樹為每個節點的左右兩個子樹高度差的絕對值不超過1的二叉樹;

a:判斷題為布林值

思想:模組化很重要,堆乙個雪人,先知道怎麼堆,得需要頭、身體、四肢,然後接著定義頭是怎麼做,身體怎麼做,四肢怎麼做

——由整體到區域性

最外層:判斷平衡=》絕對值小於1

次外層:如何知道高度

balance()

根節點為null,true;

根節點不為null,不滿足平衡條件,false;

滿足平衡條件,繼續以左右節點為根節點,試探下面的二叉樹,return實現遞迴。

depth()

根節點為null,0;

根節點不為0,定義左右子樹高度的高度,(這個地方想著可奇怪了,但是想簡單點,思路別和其他地方糾纏其實很簡單!),左右子樹的高度即為根節點的1個高度加上它的左/右子樹高度(depth(root.left/right)),最後根據左右子樹的高度比較,返回其中的較大值,即為整棵樹的高度!

左右子樹的高度會隨著平衡判斷的深入而遞增!

判斷二叉樹是否是平衡樹

面試題39 輸入一顆二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中節點的左右子樹的深度相差不超過1,那麼它就是一顆平衡二叉樹 判斷二叉樹是不是平衡樹 bool isbalanced binarytreenode proot,int height int leftheight int rig...

判斷二叉樹是否是平衡二叉樹

二叉樹的節點定義為 public class treenode 二叉樹的深度 根節點到葉節點的最長路徑長度 平衡二叉樹 二叉樹中任一節點的左右子樹的深度相差不超過1 遞迴的方法 如下 public boolean isbalanced treenode root intleft getheight ...

判斷二叉樹是否是平衡二叉樹

平衡二叉搜尋樹 balanced binary tree 具有以下性質 它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。思路 如果一顆二叉樹的所有子樹都是平衡二叉樹,它一定是平衡二叉樹。include using namespace std typedef...