平衡二叉树检查 牛客网 程序员面试金典 C++ Python
平衡二叉树检查 牛客网 程序员面试金典 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相关推荐
- 有向路径检查 牛客网 程序员面试金典 C++ Python
有向路径检查 牛客网 程序员面试金典 C++ Python 题目描述 对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径. 给定图中的两个结点的指针DirectedGraphNode* a, ...
- 回文链表 牛客网 程序员面试金典 C++ Python
回文链表 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,检查链表是否为回文. 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文. 测试样例 ...
- 原串反转 牛客网 程序员面试金典 C++ Python
原串反转 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniS ...
- 空格替换 牛客网 程序员面试金典 C++ Python
空格替换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实 ...
- 集合栈 牛客网 程序员面试金典 C++ Python
集合栈 牛客网 程序员面试金典 C++ Python 题目描述 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈.该数据结构应支持与普通 ...
- 双栈排序 牛客网 程序员面试金典 C++ Python
双栈排序 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中. ...
- 整数转化 牛客网 程序员面试金典 C++ Python
整数转化 牛客网 程序员面试金典 C++ Python 题目描述 编写一个函数,确定需要改变几个位,才能将整数A转变成整数B. 给定两个整数int A,int B.请返回需要改变的数位个数. 测试样例 ...
- 确定字符互异 牛客网 程序员面试金典 C++ Python
确定字符互异 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniStri ...
- 无缓存交换 牛客网 程序员面试金典 C++ Python
无缓存交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值. 给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回 ...
最新文章
- 网络工程师职业发展路线图
- 零基础学Python(第九章 循环控制【break】与【continue】)
- linux fcitx 下载网址(亲测可用)
- 文通表格识别系统是表格数据录入的好帮手
- 从初恋到生子,聊聊我的十年爱情。
- BZOJ3795 : 魏总刷DP
- 使用命令行工具创建WildFly OpenShift应用程序
- windows文件路径大于MAX_PATH
- 判断素数或者求出素数的基本算法 《挑战程序设计竞赛》
- Linux网络转发和端口映射的笔记
- Win10 安装 VS2015 失败解决办法
- 加入域时出现以下错误:找不到网络路径
- PostgreSQL逻辑优化——整体架构
- 纯css控制-表格表头固定,内容多时滚动内容
- DPDK性能优化技术汇总
- paip.python开发环境搭建
- c#: Newtonsoft.Json 高级用法二(jsonpath)
- 如何将手机屏幕投影到电脑电视
- 网络七层协议,一张图片告诉你
- 【时间序列】ICML 2020 时间序列相关论文总结(附原文源码)
热门文章
- 冰雪复古鸿蒙碎片哪里爆,冰雪复古:传奇老玩家都在找,能打金爆率高
- 2023年第二届服务机器人国际会议(ICoSR 2023) | IEEE-CPS独立出版
- 4.2.2——计算ln2的值
- Java计算ln(N!)
- linux 登录服务失败,向日葵linux版总是提示登录失败,连接不上服务器怎么班?...
- 我为什么反对语言之争?我的语言历险
- 新程序员大会(NPCon):从大模型到AGI,ChatGPT的大航海时代!
- 亚马逊上儿童玩具需要提供的认证介绍
- Web前端之如何描述自己做过的项目
- 递归与分治策略算法之循环赛日程表