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; }