//
// main.cpp
// balanced binary tree
//
// Created by zhukunjie on 14-9-3.
// Copyright (c) 2014年 zhukunjie. All rights reserved.
//
主要采用dfs的思想
#include <iostream>
struct TreeNode{
TreeNode *left;
TreeNode * right;
int val;
TreeNode(int x):val(x){}
};
bool flag=true;
int dfs(TreeNode * root){
if(!root) return -1;
int left=dfs(root->left);
int right=dfs(root->right);
if(abs(left-right)>1) {
flag=false;
return 0;
}
return abs(left-right)>0?left+1:right+1;
}
bool isBalanced (TreeNode *root){
if(root) dfs(root);
return flag;
}
int main(int argc, const char * argv[])
{
TreeNode *a1=new TreeNode(2);
TreeNode *a2=new TreeNode(3);
TreeNode *a3=new TreeNode(4);
TreeNode *a4=new TreeNode (5);
a1->left=a2;
a2->left=a3;
isBalanced(a1);
// insert code here...
std::cout << "Hello, World!\n";
return 0;
}