NC62 平衡二叉树

Posted coder 靓仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NC62 平衡二叉树相关的知识,希望对你有一定的参考价值。

情景提要

    牛客题解系列,按照题号顺序开始。







NC62 平衡二叉树








01




题目描述

     输入一棵二叉树,判断该二叉树是否是平衡二叉树。

在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树

    平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

    注:我们约定空树是平衡二叉树。


02




输入输出示例

输入:

    {1,2,3,4,5,6,7}

返回值:

    true


03




题目分析


思路


    需要考虑两点:

(1)当前节点左右子树的高度差是否不超过1。

(2)当前节点的左右子树是否是平衡二叉树。

 使用递归去做。

 还需要一个判断节点高度的函数。节点的高度是左右子树的最大高度+1,仍然需要递归。

NC62 平衡二叉树



03




代码实现


方法


class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if(!pRoot) return true; if(!IsBalanced_Solution(pRoot->left) || !IsBalanced_Solution(pRoot->right)) return false; int l1 = getDepth(pRoot->left); int r1 = getDepth(pRoot->right); if(abs(l1-r1)<=1) return true; return false; } int getDepth(TreeNode* root){ if(!root) return 0; return max(getDepth(root->left),getDepth(root->right)) + 1; }};

04




NC62 平衡二叉树

     二叉树的递归,判断平衡二叉树

     需要注意两个条件缺一不可。

NC62 平衡二叉树

NC62 平衡二叉树

欢迎评论区留言讨论哦

NC62 平衡二叉树

NC62 平衡二叉树

欢迎扫码关注

查看更多精彩内容




以上是关于NC62 平衡二叉树的主要内容,如果未能解决你的问题,请参考以下文章