LeetCode 110.平衡二叉树(C++)
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
示例 1:
给定二叉树 [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回 true 。
示例 2:
给定二叉树 [1,2,2,3,3,null,null,4,4]
1
/ \
2 2
/ \
3 3
/ \
4 4
返回 false 。
#include <iostream>
#include <numeric>
#include <algorithm> using namespace std; static int x = []() {std::ios::sync_with_stdio(false); cin.tie(); return ; }(); struct TreeNode {
int value;
TreeNode* left;
TreeNode* right;
TreeNode(int x) :value(x), left(NULL), right(NULL) {}
}; class Solution {
public:
bool isBalanced(TreeNode* root) {
if (!root)//当二叉树为空时,依然满足平衡二叉树要求
return true;
Rec(root);
return flag;
} int Rec(TreeNode* T) {
if (!T) {//递归结束条件,当递归到叶子节点末端结束
return ;
}
else {
/*以[1,2,2,3,null,null,3,4,null,null,4]举例
整体理解好一点: 先左再右(先搜索根结点左边的左叶子节点,再搜索根结点左边的右叶子节点;再搜索根结点右边的左叶子节点...)
当搜索到左边左叶子节点末端,对子节点(假设中的"根结点")来说,高度为0。left = 0, right = 0,这个阶段结束,返回1("根结点")
当开始回退到上一个节点,此时left = 1, 执行Rec(T->right)=>right = 0;函数结束,返回max(left, right)+1 = 2
此时left = 2,...right = 0...
最后反馈给根结点的是max(left=3, right=0)+1,flag = false; 接着,开始搜索右叶子树,上面的相同,不过是将函数返回值用right接收
*/
int left = Rec(T->left);
int right = Rec(T->right);
if (abs(left - right) > )
flag = false;
return max(left, right) + ;//+1的原因是要加上根结点
}
}
private:
bool flag = true;//当二叉树是平衡二叉树时,不会对flag进行任何操作
};
int main()
{
system("PAUSE");
return ;
}
LeetCode 110.平衡二叉树(C++)的更多相关文章
- LeetCode 110. 平衡二叉树(Balanced Binary Tree) 15
		
110. 平衡二叉树 110. Balanced Binary Tree 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点的左右两个子树 ...
 - Java实现 LeetCode 110 平衡二叉树
		
110. 平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1. 示例 1: 给定二叉树 [3,9 ...
 - [LeetCode 110] - 平衡二叉树 (Balanced Binary Tree)
		
问题 给出一棵二叉树,判断它是否在高度上是平衡的. 对于本问题,高度上平衡的二叉树定义为:每个节点的两棵子树的深度差永远不大于1的一棵二叉树. 初始思路 根据定义,思路应该比较直接:递归计算每个节点左 ...
 - C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解
		
剑指offer 面试题39:判断平衡二叉树 提交网址: http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...
 - LeetCode:平衡二叉树【110】
		
LeetCode:平衡二叉树[110] 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1. 示例 ...
 - Leetcode:110. 平衡二叉树
		
Leetcode:110. 平衡二叉树 Leetcode:110. 平衡二叉树 点链接就能看到原题啦~ 关于AVL的判断函数写法,请跳转:平衡二叉树的判断 废话不说直接上代码吧~主要的解析的都在上面的 ...
 - [LeetCode] 110. Balanced Binary Tree 平衡二叉树
		
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
 - LeetCode 110. Balanced Binary Tree (平衡二叉树)
		
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
 - 递归 - Leetcode 110 判断二叉树是否为平衡二叉树
		
110. Balanced Binary Tree Given a binary tree, determine if it is height-balanced. For this problem, ...
 
随机推荐
- C#/Python/MATLAB操作PostgreSQL数据库
			
PostgreSQL数据库是一个功能非常强大的开源数据库,支持多种SQL特性,非常好用.此外由于结合PostGIS可以实现空间数据库功能,故非常适合GIS领域的使用.本文旨在介绍C#.Python.M ...
 - Iterator主要有三个方法:hasNext()、next()、remove()详解
			
一.Iterator的API 关于Iterator主要有三个方法:hasNext().next().remove() hasNext:没有指针下移操作,只是判断是否存在下一个元素 next:指针下移, ...
 - [译]Javascript中的mutators
			
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
 - 没固定公网 IP 的公司内网实现动态域名解析( 阿里云万网解析 )
			
情景说明 前段时间应公司需求,需要将内网的服务映射到公网.由于公司使用的是类似家庭宽带的线路,没有固定的公网 IP 地址,所以决定使用域名来完成. 当时有几种方案: 1.花生壳:但是目前需要乱七八糟的 ...
 - UIViewController函数调用顺序
			
/*********** 0 执行1次而已 ******************/ + (void)load { NSLog(@" 0:%s", __func__); } /*** ...
 - day02.1-Linux虚拟操作系统的安装
			
在windons环境中配置Linux虚拟操作系统,需要事先在Windons系统上下载并安装虚拟运行软件“VMware Workstations”,以下虚拟物理机的建立和虚拟Linux系统的配置都是在该 ...
 - [SinGuaRiTy] 2017-07-24 NOIP2015 模拟赛
			
[SinGuLaRiTy-1030] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 对于所有题目: Time Limit: 1s | Mem ...
 - Unity---UGUI入门基础---更新中
			
目录 1.UGUI介绍 2.UGUI基础 2.1 Canvas---画布 2.2 Text控件 2.3 Image控件 2.4 RawImage控件 2.5 Button控件 2.6 Toggle控件 ...
 - 内核启动后,lcd显示logo失败
			
针对-s5pv210,但对其他平台也使用 lcd显示logo失败,若显示成功默认的logo是一只企鹅,但是串口打印“Start display and show logo”,但是LCD屏没有显示 ...
 - the swap trick用于锐减过剩容量
			
1.由于vector的复制构造函数只为被复制的vector分配它所需要的空间,故可以用如下的方式来削减vector v中过剩的容量:vector<int>(v).swap(v) 2.the ...