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 平衡二叉树的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 1833. 雪糕的最大数量 / NC62 平衡二叉树 / NC7:股票(一次交易)/ NC22 合并两个有序的数组

NC41 最长无重复子数组/NC133链表的奇偶重排/NC116把数字翻译成字符串/NC135 股票交易的最大收益/NC126换钱的最少货币数/NC45实现二叉树先序,中序和后序遍历(递归)(代码片段

北邮数据结构考研——平衡二叉树LR型失衡

[数据结构4.8]平衡二叉树

求数据结构算法平衡二叉树实现代码

平衡二叉树详解——PHP代码实现