1370 高度平衡的二叉樹(二叉樹)

2021-10-02 15:42:20 字數 955 閱讀 4134

題目描述

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。 

一棵高度平衡二叉樹定義為:乙個二叉樹每個節點的左右兩個子樹的高度差的絕對值不超過1。 

輸入

輸入一行,按照先序輸入一棵二叉樹,其中空節點用 -1 表示。

輸出

若是則輸出yes,否則輸出no。

樣例輸入

1 2 -1 -1 3 4 -1 -1 -1
樣例輸出

yes
#include#includeusing namespace std;

typedef struct binode*bitree;

//建立二叉樹

void createtree(bitree &t)else }}

// 判斷二叉樹t是否為平衡二叉樹:左右子樹是平衡二叉樹,平衡平衡因子為-1或者0或者1,d表示t樹的高度

int judgebalancedbitree(bitree t, int& d)

int ld, rd;

if(!judgebalancedbitree(t->lchild, ld)) return 0; // 判斷左子樹不是平衡二叉樹,並得到其高度

if(!judgebalancedbitree(t->rchild, rd)) return 0;

d = (ld>rd?ld:rd)+1; // 【注】計算t的高度,d採用引用(拿到左子樹的高度,拿到右子樹的高度)

return abs(ld-rd)<=1; // 到這裡表示左右子樹已經平衡,只要判斷平衡平衡因子是否為-1, 0, 1

} int main(void)else

return 0;

}

二叉樹的高度 110 平衡二叉樹

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹 每個節點 的左右兩個子樹的高度差的絕對值不超過 1 示例 1 輸入 root 3,9,20,null,null,15,7 輸出 true 示例 2 輸入 root 1,2,2,3,3,null,null,4,...

二叉樹 平衡二叉樹

1.題目 給定乙個二叉樹,判斷這棵二叉樹是否是高度平衡的二叉樹 平衡二叉樹 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1 2.題目分析 1 如果乙個節點的兩個子樹的深度之差超過1,則不是平衡二叉樹 2 如果乙個節點的兩個子樹的深度之差不超過1,則是平衡二叉樹 3.程式分析 1 若這棵二...

二叉樹 48 二叉樹 二叉樹的高度

目的 使用c 模板設計並逐步完善二叉樹的抽象資料型別 adt 內容 1 請參照鍊錶的adt模板,設計二叉樹並逐步完善的抽象資料型別。由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,推薦將抽象類及對應的派生類分別放在單獨的標頭檔案中。參考教材 課件,以及網盤中的鍊錶...