struct TreeNode{
int val;
TreeNode * left;
TreeNode *right;
TreeNode(int a): val(a), left(NULL), right(NULL){}
};
(1) 最长路径的长度为二叉树的深度
int getDepth(TreeNode *root){
if(root == NULL) return 0;
int left = getDepth(root->left);
int right = getDepth(root->right);
return (left > right) ? (left +1) : (right +1);
}
(2)判断是否是平衡二叉树(后续遍历的应用)
bool isBalanced(TreeNode *root, int &len){
if(root == NULL){
len = 0;
return true;
}
int left, right;
if(isBalanced(root->left, left) && isBalanced(root->right, right)){
int diff = left - right;
len = left > right ? (left +1 ) : (right + 1) ;
if(diff <-1 || diff > 1)
return false;
return true;
}
retunr false;
}