平衡二叉树

来源:互联网 发布:软件项目管理常见问题 编辑:程序博客网 时间:2024/05/29 13:28

给一颗二叉树,判断是否是平衡二叉树,(任意节点的左右子节点深度相差不超过1)

思路:递归,这个题需要记住

代码:

/** * 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 = 0;        return isBalanced_helper(root,depth);    }    bool isBalanced_helper(TreeNode *root,int & depth){        if(root==NULL){            depth = 0;            return true;        }        int left = 0,right = 0;        if(isBalanced_helper(root->left,left) && isBalanced_helper(root->right,right)){            if(abs(left-right)<=1){                depth = 1+max(left,right);                return true;            }        }        return false;    }};
原创粉丝点击