判斷二叉樹是否平衡(letcodeC語言)

2021-08-30 04:39:38 字數 934 閱讀 6647

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

本題中,一棵高度平衡二叉樹定義為:

乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。

示例 1:

給定二叉樹 [3,9,20,null,null,15,7]

3

/ \

9 20

/ \

15 7

返回 true 。

示例 2:

給定二叉樹 [1,2,2,3,3,null,null,4,4]

1

/ \2 2

/ \

3 3

/ 4 4

返回 false 。

總體思路:利用遞迴判斷左右子樹的深度是否相差1來判斷是否是平衡二叉樹。

解法一:利用maxdepth求出每個節點左右的深度,在求該結點的的左右子樹深度時遍歷一遍樹,再次判斷子樹的平衡性時又遍歷一遍樹結構,造成遍歷多次

int maxdepth(struct treenode* root) //求樹深度函式

bool isbalanced(struct treenode* root)

方法二:是一邊遍歷樹一邊判斷每個結點是否具有平衡性。

bool isbalanced(struct treenode* root, int* depth)

int leftdepth, rightdepth;

if(isbalanced(root->left,&leftdepth) && isbalanced(root->right,&rightdepth))

}return false;

}bool isbalanced(struct treenode* root)

判斷二叉樹是否平衡 是否完全二叉樹 是否二叉排序樹

1.判斷二叉樹是否平衡 求樹的高度 int treedepth node t return0 判斷二叉樹是否平衡 int isbalanced node t 2.判斷二叉樹是否相同 判斷兩棵二叉樹是否相同 int comptree node tree1,node tree2 拷貝二叉樹 void c...

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

一 線性思維 遍歷每個節點都時候,求左右子樹的深度,如果左右子樹深度相差不超過1,繼續遞迴遍歷左右節點,此種方法會重複遍歷,時間效率不高 is balanced t if t is null return true left treedepth t.left right treedepth t.ri...

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

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