二叉树平衡检查(递归)

来源:互联网 发布:新软件发布 编辑:程序博客网 时间:2024/06/01 10:48

题目描述

实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。

给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。

/*struct TreeNode {    int val;    struct TreeNode *left;    struct TreeNode *right;    TreeNode(int x) : val(x), left(NULL), right(NULL) {}};*/int depthTree(TreeNode* root){if (root==NULL){return -1;}else{int left=depthTree(root->left)+1;int right=depthTree(root->right)+1;return left>right?left:right;}}class Balance {public:bool isBalance(TreeNode* root) {if (root==NULL){return -1;}int depth_left=depthTree(root->left);int depth_right=depthTree(root->right);int diff=depth_left-depth_right;if (diff>1||diff<-1)return false;return isBalance(root->left)&&isBalance(root->right);}};


0 0