首页 > 编程语言 > 详细

每日LeetCode - 110. 平衡二叉树(C语言)

时间:2021-05-28 10:06:41      阅读:19      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

C语言

自底向上的递归,类似于后序遍历,对于当前遍历到的节点,先递归地判断其左右子树是否平衡,再判断以当前节点为根的子树是否平衡。

#include "stdbool.h"
#define NULL ((void *)0)

//Definition for a binary tree node.
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
};

int height(struct TreeNode* root) {
    if (root == NULL)
        return 0;
    int leftHeight = height(root->left);
    int rightHeight = height(root->right);
    if (leftHeight == -1 || rightHeight == -1 || fabs(leftHeight - rightHeight) > 1)
        return -1;
    else
        return fmax(leftHeight, rightHeight) + 1;
}

bool isBalanced(struct TreeNode* root) {
    return height(root) >= 0;
}

 

每日LeetCode - 110. 平衡二叉树(C语言)

原文:https://www.cnblogs.com/vicky2021/p/14820217.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!