题目分析:
- 给定一棵二叉树,判断此二叉树是否为平衡二叉树。
解题思路:
平衡二叉树
平衡二叉树(AVL Tree)是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
递归实现
实现平衡二叉树,关键在于求取树的高度和判断树中左右两个子树的高度差是否满足绝对值不超过1。故实现过程主要如下:
1)递归求二叉树的高度;
2)递归判断二叉树是否满足平衡二叉树。
实现程序
//递归求取二叉树的高度 int height(struct TreeNode *root) { if (root == NULL) return 0; else { if (root->left == NULL) return height(root->right) + 1; else if (root->right == NULL) return height(root->left) + 1; else { int l = height(root->left); int r = height(root->right); return l < r ? (r + 1) : (l + 1); } } } //递归判断二叉树是否是平衡二叉树 bool isBalanced(struct TreeNode *tree) { if (tree == NULL) return true; else { int l = height(tree->left); int r = height(tree->right); if (l - r >= -1 && l - r <= 1) return isBalanced(tree->left) && isBalanced(tree->right); else return false; } }

本文介绍了一种递归算法来判断一棵二叉树是否为平衡二叉树,并提供了具体的实现代码。
459

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



