題目描述
實現乙個函式,檢查二叉樹是否平衡,平衡的定義如下,對於樹中的任意乙個結點,其兩顆子樹的高度差不超過1。
給定指向樹根結點的指標treenode* root,請返回乙個bool,代表這棵樹是否平衡。
思路一:
用遞迴來遍歷計算每個節點左右子樹的高度,最後比較差值。時間複雜度o(n logn)。
public
boolean
isbalance(treenode root) else
}public
intgetheight(treenode root)
思路二:
減少對getheight的呼叫,一次遍歷整棵樹,在遍歷的過程中就判斷數是否是平衡的,如果不是返回-1,若是平衡的返回數的高度。時間複雜度o(n),空間複雜度o(h),其中h為樹的高度
public
boolean
isbalance(treenode root) else
}public
intcheckheight(treenode root)
int leftheight = checkheight(root.left);
if (leftheight == -1)
int rightheight = checkheight(root.right);
if (rightheight == -1)
int heigthdiff = leftheight - rightheight;
if (math.abs(heigthdiff) > 1) else
}
二叉樹平衡檢查
實現乙個函式,檢查二叉樹是否平衡,平衡的定義如下,對於樹中任意乙個結點,兩顆子樹的高度差不超過1。給定指向樹根結點的指標treenode root,請返回乙個bool,代表這棵樹是否平衡。樹結構自身就是遞迴定義,很多問題都可以利用遞迴巧妙地實現,對於這道題,關鍵點有兩處 求結點左右子樹高度差 遍歷樹...
二叉樹平衡檢查
題目描述 實現乙個函式,檢查二叉樹是否平衡,平衡的定義如下,對於樹中的任意乙個結點,其兩顆子樹的高度差不超過1。給定指向樹根結點的指標treenode root,請返回乙個bool,代表這棵樹是否平衡。coding utf 8 class treenode def init self,x self....
C 二叉樹平衡檢查
關於二叉樹與圖 1.從無到有實現二叉樹和圖 2.在二叉樹和圖中檢索 查詢target value 二叉搜尋樹 binary search tree 所要滿足的條件 對於二叉搜尋樹中任意乙個節點 它的左子樹中的所有數值都比當前節點的關鍵碼小 它的右子樹中的所有節點的關鍵碼都比當前節點的關鍵碼大 二叉搜...