在不熟悉递归的情况下,用了两次递归来完成该题,做一纪念
{{//解决过程两次用到递归,完美、快速地解决了这道题;首先一个求高度的函数这个函数要用到递归;之后在主函数里面,比较两个子树的高度差,如果二者平衡,也要继续分别递归二者;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)); } };

本文介绍了一种使用两次递归解决二叉树平衡性判断问题的方法。首先通过递归函数计算二叉树的高度,然后在主函数中比较左右子树高度差是否超过1来判断树是否平衡。
2477

被折叠的 条评论
为什么被折叠?



