平衡二叉搜尋樹(balanced binary tree)具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。
思路:如果一顆二叉樹的所有子樹都是平衡二叉樹,它一定是平衡二叉樹。
#include
using
namespace std;
typedef
struct bnode* btree;
struct bnode
;void
insert
(btree &t,
int data)
else
if(data>data)
insert
(t->left,data)
;else
if(data>=t-
>data)
insert
(t->right,data);}
bool
isbalancetree
(btree root,
int&depth)
int ldepth =
0,rdepth=0;
if(!isbalancetree
(root-
>left, ldepth)||!
isbalancetree
(root-
>right, rdepth)
) depth = rdepth > ldepth ? rdepth +
1: ldepth +1;
return
abs(ldepth - rdepth)
<2;
}int
main()
if(isbalancetree
(t,depth)
)cout<<
"yes"
<<
" "
"no"
<}
判斷二叉樹是否是平衡二叉樹
二叉樹的節點定義為 public class treenode 二叉樹的深度 根節點到葉節點的最長路徑長度 平衡二叉樹 二叉樹中任一節點的左右子樹的深度相差不超過1 遞迴的方法 如下 public boolean isbalanced treenode root intleft getheight ...
判斷二叉樹是否是平衡二叉樹
平衡樹 balance tree,bt 指的是,任意節點的子樹的高度差都小於等於1。力扣 110也有該題,可以用來驗證。如果二叉樹為空,返回true。計算出左子樹和右子樹的最大深度。如果左右子樹的最大深度的差值小於2,並且左 右子樹都是平衡二叉樹,則該二叉樹是平衡二叉樹。判斷二叉樹是否是平衡二叉樹 ...
判斷二叉樹是否是平衡二叉樹
include bits stdc h using namespace std define mem a,b memset a,b,sizeof a define pb push back typedef long long ll const int maxn 1e4 7 const int inf...