leetcode_110 Balanced Binary Tree

来源:互联网 发布:2014年网络流行歌曲 编辑:程序博客网 时间:2024/05/16 11:42

题目分析:

  • 给定一棵二叉树,判断此二叉树是否为平衡二叉树。

解题思路:

  • 平衡二叉树

    平衡二叉树(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;    }} 
0 0
原创粉丝点击