如何判斷一棵二叉樹是否是平衡二叉樹(AVL)

2021-06-21 20:28:58 字數 337 閱讀 3199

問題:判斷乙個二叉排序樹是否是平衡二叉樹

這裡是二叉排序樹的定義

解決方案:

根據平衡二叉樹的定義,如果任意節點的左右子樹的深度相差不超過1,那這棵樹就是平衡二叉樹。

首先編寫乙個計算二叉樹深度的函式,利用遞迴實現。

template

static int depth(bstreenode* pbs)

}

下面是利用遞迴判斷左右子樹的深度是否相差1來判斷是否是平衡二叉樹的函式:

template

static bool isbalance(bstreenode* pbs)

如何判斷一棵二叉樹是否是平衡二叉樹

平衡二叉樹的定義,如果任意節點的左右子樹的深度相差不超過1,那這棵樹就是平衡二叉樹。演算法思路 先編寫乙個計算二叉樹深度的函式getdepth,利用遞迴實現 然後再遞迴判斷每個節點的左右子樹的深度是否相差1 static int getdepth binnode root 注意這裡的 1,對應於ro...

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

思路 遞迴方式判斷,返回的資訊應該有兩個 1 這棵樹是否是平衡的 2 這棵樹的高度為多少 public class isbalancedtree public static class returndata public static returndata process node head ret...

如何判斷一棵樹是否是平衡二叉樹

判斷的思路很簡單,若一棵樹是平衡二叉樹,它的左右子樹都是平衡二叉樹,並且左右子樹的高度差小於等於1。注意,實現的時候,判斷左右子樹的平衡性時,可以順便計算子樹高度,不用再另外計算一次,下面是其遞迴實現 include using namespace std struct treenode class...