-
Notifications
You must be signed in to change notification settings - Fork 0
/
No110.cpp
48 lines (44 loc) · 1.42 KB
/
No110.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
//function:deepth
//input:treenode,output:height of treenode
int deepth(TreeNode* root,int ideepth,int maxdep){
int templef,temprig;
templef=temprig=0;
++ideepth;
maxdep=maxdep>ideepth?maxdep:ideepth;//ideepth,templef,temprig需要考虑,孰大孰小。递归的重点。
if(root&&root->left)
templef=deepth(root->left,ideepth,maxdep);
maxdep=maxdep>templef?maxdep:templef;
if(root&&root->right)
temprig=deepth(root->right,ideepth,maxdep);
maxdep=maxdep>temprig?maxdep:temprig;
return maxdep;
}
bool isBalanced(TreeNode* root) {
if(!root) return true;
queue<TreeNode*> nodeque;
nodeque.push(root);
TreeNode* temp;
while(nodeque.size()){
temp=nodeque.front();
nodeque.pop();
int templef=0;
int temprig=0;
if(temp->left) {nodeque.push(temp->left);templef=deepth(temp->left,0,0);}
if(temp->right) {nodeque.push(temp->right);temprig=deepth(temp->right,0,0);}
int diff =abs(templef-temprig);
if(diff>1) return false;
}
return true;
}
};