1. 程式人生 > >《劍指Offer》之“平衡二叉樹”

《劍指Offer》之“平衡二叉樹”

題目描述

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

程式碼實現

/**根據平衡二叉樹定義,任意節點左右子數高度不能相差超過1。
所以我們用遞迴在求高度的同時判斷樹是否平衡,
如果平衡則返回子樹高度給上一層,
如果不平衡則直接返回-1。最終返回值如果是-1,
則樹是不平衡的,如果不是-1,則樹是平衡的。*/
class Solution {
public:
    bool IsBalanced_Solution(TreeNode* pRoot) {
        int cent = opooc(pRoot);
        if(cent==-1 ){
            return
false; } return true; } int opooc(TreeNode* root){ if(root==nullptr){ return 0; } int left = opooc(root->left); int right = opooc(root->right); if(left == -1||right ==-1){ return -1; } if(abs(left - right) > 1
) { return -1; } return (left>right?left:right)+1; } };