算法-平衡二叉树详解编程语言

/*
	[平衡二叉树]
    
    [题目]
	输入一棵二叉树,判断该二叉树是否是平衡二叉树。

    [解析]
    首先要理解平衡二叉树的定义
    同时有两个返回值的处理方法,这里是:是否为平衡二叉树、树的深度。记录树的深度可以避免在每个结点都统计树的深度,减小复杂度。
*/

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct TreeNode{
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

class Solution{
public:
    bool IsBalanced_Solution(TreeNode* pRoot){
        int depth;
        return IsBalanced_Solution(pRoot, depth);
    }

    bool IsBalanced_Solution(TreeNode* pRoot, int& depth){
        if(pRoot == NULL){
            depth = 0;
            return true;
        }
        int depthLeft;
        int depthRight;
        bool ansLeft = IsBalanced_Solution(pRoot->left, depthLeft);
        if(ansLeft == false)
            return false;
        bool ansRight = IsBalanced_Solution(pRoot->right, depthRight);
        if(ansRight == false)
            return false;

        depth = max(depthLeft, depthRight) + 1;

        return abs(depthLeft-depthRight)<=1;

    }
};

int main()
{
    return 0;
}

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/15268.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论