1. 程式人生 > >【leetcode】110 判斷一棵二叉樹是否平衡二叉樹

【leetcode】110 判斷一棵二叉樹是否平衡二叉樹

在不熟悉遞迴的情況下,用了兩次遞迴來完成該題,做一紀念

{
{//解決過程兩次用到遞迴,完美、快速地解決了這道題;首先一個求高度的函式這個函式要用到遞迴;之後在主函式裡面,比較兩個子樹的高度差,如果二者平衡,也要繼續分別遞迴二者;public: bool isBalanced(TreeNode* root) { if (root == NULL) return true; int delta = abs(TreeHeight(root->left) - TreeHeight(root->right)); if (delta>1) return false; else return (isBalanced(root->left) && isBalanced(root->right)); } private: // 計算以root為根節點的樹的高度,用遞迴 int TreeHeight(TreeNode* root) { if (root == NULL) return -1; else if(!root->left && !root->right) return 0; else return 1+max(TreeHeight(root->left), TreeHeight(root->right)); } };