面试题 39 二叉树的深度

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;




}
原文地址:https://www.cnblogs.com/graph/p/3326668.html