leetcode 刷题之路 86 Balanced Binary Tree

来源:互联网 发布:手机九宫格锁屏软件 编辑:程序博客网 时间:2024/06/11 16:51

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

判断一个二叉树是不是平衡二叉树,如果二叉树的每个节点的左右子树的深度相差不超过1,此二叉树为平衡二叉树。

思路,二叉树root为平衡二叉树的条件是,它的左右子树为平衡二叉树,左右子树的深度差不超过1,因此首先递归判断左右子树是否平衡,同时在递归过程中通过引用传参的方式传递回左右子树的深度,然后再根据左右子树的深度做出整体判断。

AC code:

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool isBalanced(TreeNode *root)     {        int depth;        return helper(root,depth);    }    bool helper(TreeNode *root,int &depth)    {        if(root==NULL)        {            depth=0;            return true;        }        int leftDepth,rightDepth;        bool b1,b2;        if(!helper(root->left,leftDepth))            return false;        if(!helper(root->right,rightDepth))            return false;        if(abs(rightDepth-leftDepth)>1)            return false;        else        {            depth=rightDepth>leftDepth?rightDepth+1:leftDepth+1;            return true;        }    }    };



0 0