方法一,參考
template
<
typename
t>
intdepthtree(bstreenode*pbs)
} template
<
typename
t>
bool
isbalancetree(bstreenode*pbs)
intdepthleft=depthtree(pbs->left);
intdepthright=depthtree(pbs->right);
if(abs(depthleft-depthright)>1)
return
false
; else
return
isbalancetree(pbs->left) && isbalancetree(pbs->right);
} 方法一用的是線序遍歷的思想, 缺點是,重複計算了多次子樹的深度
方法二用的是後序遍歷的思想,免去了對子樹的重複計算
templatebool isbalancetree(bstreenode*pbs, int &curlen)
int leftlen;
int rightlen;
bool isleftbalance;
bool isrightbalance;
leftlen = rightlen = 0;
isleftbalance = isrightbalance = false;
isleftbalance = isbalancetree(pbs->left, leftlen);
isrightbalance = isbalancetree(pbs->right, rightlen);
curlen = leftlen >= rightlen ? leftlen+1 : rightlen+1;
if (isleftbalance == true && isrightbalance == true)
} return false;
}
判斷一顆二叉樹是否是平衡二叉樹
輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。definition for a binary tree node.public class treenode class solution int left treede...
判斷一顆樹是否是平衡二叉樹
判斷一顆樹是否是平衡二叉樹 首先需要搞清楚什麼是平衡二叉樹。平衡二叉樹是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。定義乙個類先建立出結果是否是平衡的和高度為多少?public static class returnnode 主方法 public stat...
判斷一顆二叉樹是否為平衡二叉樹
一.判斷一顆二叉樹是否為平衡二叉樹 題目 輸入一顆二叉樹的根節點,判斷該二叉樹是否為平衡二叉樹。所謂的平衡二叉樹是指以當前結點為根結點的樹,左右子樹的深度不得超過1。例如 解決思路一 按照前序遍歷的路線判斷。實現 二叉樹的高度 比較左右子樹那個高,高的加1既為二叉樹的高度 int binarytre...