判断一个树是否为平衡二叉树
题目:判断一棵树是否为平衡二叉树
描述:给定一棵树,要求判断其是否为平衡二叉树,左右高度差的绝对值不大于1
题解:先求得左右各自的深度,在做比较,,如果树的高度为0就返回true,如果高度差大于1就返回false,如果小于1,就对左右分别进行此操作;
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*///想法先求左右两个的高度,然后比较绝对值是否大于1//求高度int deepth(struct TreeNode* t){int h1,h2;if(t==NULL){return 0;}else{h1=deepth(t->left);h2=deepth(t->right);if(h1>h2){return (h1+1);}else{return (h2+1);}}}bool isBalanced(struct TreeNode* root){if(root==NULL)return true;//如果为空则trueint deepthleft=deepth(root->left);int deepthright=deepth(root->right);//求得左右深度if((deepthleft-deepthright)>1||(deepthleft-deepthright)<-1)return false;return isBalanced(root->left)&&isBalanced(root->right);}
欢迎关注我一起努力加油
