From 82bf920b54c88594cf2b1ff0af8a6a788c601daa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=A0=91=E6=A3=AE?= <14021051@buaa.edu.cn> Date: Sat, 3 Nov 2018 09:43:51 +0800 Subject: [PATCH] Create 110. Balanced Binary Tree.md --- 110. Balanced Binary Tree.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 110. Balanced Binary Tree.md diff --git a/110. Balanced Binary Tree.md b/110. Balanced Binary Tree.md new file mode 100644 index 0000000..6a4e738 --- /dev/null +++ b/110. Balanced Binary Tree.md @@ -0,0 +1,22 @@ +# [110. Balanced Binary Tree](https://leetcode.com/problems/balanced-binary-tree/description/) +# 思路 +一棵非空树是平衡二叉树的充要条件是: +* 其左右子树的高相差不超过1; +* 且左右子树都是平衡二叉树。 + +因此是一个递归算法。 +# C++ +``` C++ +class Solution { +private: + int getDepth(TreeNode *root){ + if(root == NULL) return 0; + return 1 + max(getDepth(root -> left), getDepth(root -> right)); + } +public: + bool isBalanced(TreeNode* root) { + if(root == NULL) return true; + return (abs(getDepth(root -> left) - getDepth(root -> right)) <= 1) && isBalanced(root -> left) && isBalanced(root -> right); + } +}; +```