輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
/*方法一:自頂向下;從根節點向下檢查各節點的子樹是否都滿足平衡二叉樹的條件,遍歷整個二叉樹。
遞迴過程中多次重複計算子樹的深度,效率較低.
*//*
class solution
int getdepth(treenode* proot)
};*/
/*方法二:自底向上;從葉子結點向上檢查節點的子樹是否都滿足平衡二叉樹的條件,遞迴過程中用變數depth記錄二叉樹的深度累加,
避免為了求解二叉樹的深度而進行多次遞迴過程,效率有所提高。
*/class solution
bool isbalanced(treenode* proot, int& depth)
int leftd=0, rightd=0;
if(isbalanced(proot->left,leftd)&&isbalanced(proot->right,rightd))
return false;
}};
判斷平衡二叉樹
演算法 樹 平衡二叉樹 平衡二叉樹的概念 左右節點的樹高之差小於1。1.計算節點的高。通過遞迴,求出左右子樹的高度,當前節點的高度,最大的那乙個 1。int getheight treenode root 2.通過遞迴的方法計算左子樹和右子樹的樹高之差是否有小於1的,有就直接返回false.publ...
判斷平衡二叉樹
package com.jsp.tree 判斷是否是平衡二叉樹 author jiangshipan 任何乙個節點 左子樹和右子數高度差小於1 以每乙個節點為頭的樹都是平衡的,則這個樹平衡 可能 1.左樹不平 2.右樹不平 3.左或右高 整棵樹 public class isbalancedtree...
判斷平衡二叉樹
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。最直接的做法,遍歷每個節點,借助乙個獲取樹深度的遞迴函式,根據該節點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進行判斷 pubic class solution private intmaxdepth treenode root 這種做法有很明顯...