平衡二叉树检查 牛客网 程序员面试金典 C++ Python

  • 题目描述

  • 实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。

  • 给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。

C++

/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/class Balance {
public:
//rum:3ms memory:408kbool isBalance(TreeNode* root) {if (NULL == root) return true;if (NULL == root->left && NULL == root->right) return true;if (NULL != root->left && NULL == root->right)if(getTreeHeight(root->left) > 1) return false;if (NULL == root->left && NULL != root->right)if(getTreeHeight(root->right) >1) return false;return isBalance(root->left) && isBalance(root->right);}int getTreeHeight(TreeNode* root){if (NULL == root) return 0;return max(getTreeHeight(root->left),getTreeHeight(root->right))+ 1;}
};

Python

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Balance:#run:27ms memory:5736kdef isBalance(self, root):if None == root: return Trueif None == root.left and None == root.right: return Trueif None != root.left and None == root.right:if self.getTreeHeight(root.left) > 1: return Falseif None == root.left and None != root.right: if self.getTreeHeight(root.right) > 1:return Falsereturn self.isBalance(root.left) and self.isBalance(root.right) + 1def getTreeHeight(self,root):if None == root: return 0return max(self.getTreeHeight(root.left),self.getTreeHeight(root.right)) + 1

平衡二叉树检查 牛客网 程序员面试金典 C++ Python相关推荐

  1. 有向路径检查 牛客网 程序员面试金典 C++ Python

    有向路径检查 牛客网 程序员面试金典 C++ Python 题目描述 对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径. 给定图中的两个结点的指针DirectedGraphNode* a, ...

  2. 回文链表 牛客网 程序员面试金典 C++ Python

    回文链表 牛客网 程序员面试金典  C++ Python 题目描述 请编写一个函数,检查链表是否为回文. 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文. 测试样例 ...

  3. 原串反转 牛客网 程序员面试金典 C++ Python

    原串反转 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniS ...

  4. 空格替换 牛客网 程序员面试金典 C++ Python

    空格替换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实 ...

  5. 集合栈 牛客网 程序员面试金典 C++ Python

    集合栈 牛客网 程序员面试金典 C++ Python 题目描述 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈.该数据结构应支持与普通 ...

  6. 双栈排序 牛客网 程序员面试金典 C++ Python

    双栈排序 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中. ...

  7. 整数转化 牛客网 程序员面试金典 C++ Python

    整数转化 牛客网 程序员面试金典 C++ Python 题目描述 编写一个函数,确定需要改变几个位,才能将整数A转变成整数B. 给定两个整数int A,int B.请返回需要改变的数位个数. 测试样例 ...

  8. 确定字符互异 牛客网 程序员面试金典 C++ Python

    确定字符互异 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniStri ...

  9. 无缓存交换 牛客网 程序员面试金典 C++ Python

    无缓存交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值. 给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回 ...

最新文章

  1. 网络工程师职业发展路线图
  2. 零基础学Python(第九章 循环控制【break】与【continue】)
  3. linux fcitx 下载网址(亲测可用)
  4. 文通表格识别系统是表格数据录入的好帮手
  5. 从初恋到生子,聊聊我的十年爱情。
  6. BZOJ3795 : 魏总刷DP
  7. 使用命令行工具创建WildFly OpenShift应用程序
  8. windows文件路径大于MAX_PATH
  9. 判断素数或者求出素数的基本算法 《挑战程序设计竞赛》
  10. Linux网络转发和端口映射的笔记
  11. Win10 安装 VS2015 失败解决办法
  12. 加入域时出现以下错误:找不到网络路径
  13. PostgreSQL逻辑优化——整体架构
  14. 纯css控制-表格表头固定,内容多时滚动内容
  15. DPDK性能优化技术汇总
  16. paip.python开发环境搭建
  17. c#: Newtonsoft.Json 高级用法二(jsonpath)
  18. 如何将手机屏幕投影到电脑电视
  19. 网络七层协议,一张图片告诉你
  20. 【时间序列】ICML 2020 时间序列相关论文总结(附原文源码)

热门文章

  1. 冰雪复古鸿蒙碎片哪里爆,冰雪复古:传奇老玩家都在找,能打金爆率高
  2. 2023年第二届服务机器人国际会议(ICoSR 2023) | IEEE-CPS独立出版
  3. 4.2.2——计算ln2的值
  4. Java计算ln(N!)
  5. linux 登录服务失败,向日葵linux版总是提示登录失败,连接不上服务器怎么班?...
  6. 我为什么反对语言之争?我的语言历险
  7. 新程序员大会(NPCon):从大模型到AGI,ChatGPT的大航海时代!
  8. 亚马逊上儿童玩具需要提供的认证介绍
  9. Web前端之如何描述自己做过的项目
  10. 递归与分治策略算法之循环赛日程表